20200210のGitに関する記事は4件です。

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年越しに遊べました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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_rsa

GitのSetting->SSH and GHG keys->右上の New SSH keyに行ってください。ここですね↓
https://github.com/settings/ssh/new

Titleはなんでも大丈夫です
Keyのところに Ctrl + V すればさっきクリップボードで保存した鍵がペーストされます。
Add SSH keyをプッシュして鍵の設定が完了。

めでたしめでたし・・・

備忘録

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

全てのコミット履歴を抹消する方法

コミット履歴を抹消してgithubpushする方法です。

個人開発で適当すぎるコミット文を量産してしまって公開するときに恥ずかしい思いをしないために使います。

注意)会社で使うのは絶対にやめましょう。(間違いなくクビになります。)

git checkout --orphan work
git commit -m "first commmit"
git checkout -B master
git branch -d work
git push -f
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

全てのコミット履歴抹消する方法

コミット履歴を抹消してgithubpushする方法です。

個人開発で適当すぎるコミット文を量産してしまって公開するときに恥ずかしい思いをしないために使います。

注意)会社で使うのは絶対にやめましょう。(間違いなくクビになります。)

git checkout --orphan work
git commit -m "first commmit"
git checkout -B master
git branch -d work
git push -f
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む