- 投稿日:2020-02-10T16:19:56+09:00
GitでPowerShellスクリプトファイルをhookする。
プロジェクト運用上、
「Visual Studioで開発を行っているが、開発環境ごとにcsproj
の内容を変えている(IISの設定)」
ので、ごく個人的にはリーダーさんがスムーズにプロジェクトファイルを開いて動作確認していただきたく、PowerShellで、
「自分の環境でcsproj
を開くために行った編集を間違えてコミットしないように、csproj
の中身を確認する」
だけのスクリプトを書いたので、そのメモ。
.git/info/exclude
に*.csproj
を突っ込むだけでいいのでは?Visual Studioで追加・削除したファイルの管理は行いたいので、今回はこうしました。
Git Hooks
公式ドキュメントはもちろん、Qiitaでもこれの使い方はたくさん出てくるので、割愛。
Gitで何かコミットやコミットログを編集するようなコマンドを叩いた時に、Git Bashでスクリプトを動かして、チェック機能などを付加できるものだという雑理解でいいんでないかと。
Git BashでPowerShellのスクリプトを動かす方法。
今回はコミットを行う直前にチェックしたかったので、
.git/hooks/pre-commit
を作ります。pre-commit#!/bin/sh powershell.exe -Command "echo 手ミー、コミット!"ワンラインであれば上記で十分ですが、今回はスクリプトファイルを作ったので、
.git/hooks/
の下の各ファイルの内容は以下のようになりました。pre-commit#!/bin/sh powershell.exe -File ".git/hooks/check-csproj.ps1"check-csproj.ps1# csproj の中身はxmlなので、XMLオブジェクトに変換して取り込む # 気を付ける点としては、スクリプトファイルの存在するディレクトリからではなく、 # Git管理下ディレクトリの直下からのパスを指定すること。 $proj_xml = [xml](Get-Content "src/Tale.proj") if ($proj_xml.Project.ProjectExtension.VisualStudio.FlavorProperties.WebProjectProperties.IISUrl -ceq "http://localhost/") { #IISUrlプロパティの中身が "http://localhost/" 決め打ち Write-Host "ニャハハ! 片付けバッチリだな!" exit 0 } else { #IISUrlプロパティがそもそもなかったり、 "http://localhost/" 以外が割り当てられていた場合 Write-Host "ぬわぁぁぁぁぁっ! 貴様、csprojを汚すな!" exit 1 }上記
check-csproj.ps1
のコメントアウトでも書いた通り、スクリプトファイルからの相対パスではなく、Git管理下ディレクトリ(フォルダ)からの相対パスで、各ファイルを呼びだします。参考資料
P.S. スクリプト内の文字列について
UndertaleというRPGのキャラクターのセリフっぽくしました。
最近のLinux版SteamでもProtonを強制有効化すると遊べます。
おかげで姉に誕生日プレゼントで買ってもらったこのゲームを3年越しに遊べました。
- 投稿日:2020-02-10T09:48:59+09:00
GitHubの公開鍵と秘密鍵上書きしちゃったから作り直した
こんな状況の人におすすめ
- Gitのアカウント新しく作った
- Git pushのコマンド打ったら "Permission denied" と言われた
- Gitの公開鍵
使うコマンド
- ssh-keygen -t rsa
これ一つで↑公開鍵・秘密鍵が生成されます
手順
てきとうに
GitBash hare
して↓コマンド実行$ssh-keygen -t rsaそうすると色々と言われます
Generating public/private rsa key pair. Enter file in which to save the key (/Users/ユーザー名/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again:ここですでに
C:\Users\ユーザー名\.ssh\id_rsa
があるとしたらEnter file in which to save the key (/Users/ユーザー名/.ssh/id_rsa):と言われたときにそのままエンター押すと
C:\Users\ユーザー名\.ssh\id_rsa
ここにそのまんま上書きするんで気を付けてください。
別の場所に鍵を作りたかったらEnter file in which to save the key (/Users/ユーザー名/.ssh/id_rsa): C:\Usres\hoge\key\id_rsaこうすれば上書きされずにつけたい名前・パスで鍵が生成されます。
(絶対パスで書いたほうが安全かもしれない)
そしてGitに作った鍵を保存します。これすると勝手にコピー↓してくれます$ clip < C:\Usres\hoge\key\id_rsaGitの
Setting
->SSH and GHG keys
->右上のNew SSH key
に行ってください。ここですね↓
https://github.com/settings/ssh/newTitleはなんでも大丈夫です
KeyのところにCtrl + V
すればさっきクリップボードで保存した鍵がペーストされます。
Add SSH key
をプッシュして鍵の設定が完了。めでたしめでたし・・・
備忘録
- 投稿日:2020-02-10T06:39:29+09:00
全てのコミット履歴を抹消する方法
コミット履歴を抹消して
github
にpush
する方法です。個人開発で適当すぎるコミット文を量産してしまって公開するときに恥ずかしい思いをしないために使います。
注意)会社で使うのは絶対にやめましょう。(間違いなくクビになります。)
git checkout --orphan work git commit -m "first commmit" git checkout -B master git branch -d work git push -f
- 投稿日:2020-02-10T06:39:29+09:00
全てのコミット履歴抹消する方法
コミット履歴を抹消して
github
にpush
する方法です。個人開発で適当すぎるコミット文を量産してしまって公開するときに恥ずかしい思いをしないために使います。
注意)会社で使うのは絶対にやめましょう。(間違いなくクビになります。)
git checkout --orphan work git commit -m "first commmit" git checkout -B master git branch -d work git push -f