はんなりと、ゆるやかに

アジャイル、スクラムが好きが日々から学んだことをアウトプット

変更された行のコミットを確認するGitコマンド:blame / おすすめのツールはVSCode+GitLens

前回の記事はgit bisectを紹介しました。
iucstscui.hatenablog.com

今回は同じくバグ調査に役立つgit blameです。
git blameは変更された行の情報(コミットのハッシュ値や更新者)を確認するコマンドです。誰が変更したか分かれば変更の意図などを確認できますよね。
git-scm.com

以下のそれぞれの環境で使う方法についてまとめていきます。

  • CLI
  • VisualStudioCode+GitLens
  • TortoiseGit
  • GitHub

サンプルコード

git bisectの記事で使ったコードを使って検証しました。
github.com

CLIで使う

基本的な使い方

git blame <ファイル名> を実行するとそのファイルの変更一覧が確認できます。

<省略>
^XXXXXXX (iucstscui 2020-05-05 21:59:30 +0900 21)             else if (num % 3 == 0)
^XXXXXXX (iucstscui 2020-05-05 21:59:30 +0900 22)             {
YYYYYYY (iucstscui 2020-05-05 22:05:26 +0900 23)                 return "Fizzzzzzzzzzzzzzz";
^XXXXXXX (iucstscui 2020-05-05 21:59:30 +0900 24)             }
<省略>

左からコミットのハッシュ値、更新者、日付が表示されます。

特定の行を調べる

-Lオプションを使うことで表示数行数を絞り込めます。

行番号指定で絞り込み

以下は10行目から20行目を表示します。
git blame -L 10,20 -- <ファイル名>

以下は10行目から10行を表示します。
git blame -L 10,+10 -- <ファイル名>

正規表現で絞り込み

以下はキーワードの文字がヒットした行付近を表示します。
git blame -L /キーワード/ -- <ファイル名>

過去の情報を見る

以下は指定したリビジョンより過去の情報が表示されます。
git blame <コミットのハッシュ値> -- <ファイル名>

VisualStudioCode+GitLensで使う

VisualStudioCodeのGitLensという拡張機能をインストールするとgit blameと同等の機能がより使いやすくなります。
marketplace.visualstudio.com

選択行にgit blameと同等の情報が表示されます。
f:id:iucstscui:20200508001450p:plain

選択行の空白の部分にマウスオーバーすると変更差分が表示されます。
f:id:iucstscui:20200508001717p:plain

上記ポップアップのChangesをクリックすると差分が表示されます。
f:id:iucstscui:20200508001938p:plain

GitHubで使う

GitHubでもgit blameが使えます。

GitHubでファイルを表示後、右上のBlameボタンをクリックします。
f:id:iucstscui:20200508003231p:plain

変更箇所にコミットメッセージが表示されます。
f:id:iucstscui:20200508003357p:plain

上記のコミットメッセージをクリックすると差分が表示されます。
f:id:iucstscui:20200508003612p:plain

TortoiseGitで使う

TortoiseGitでもgit blameが使えます。

ファイルを右クリックし、Blameを選択します。
f:id:iucstscui:20200508002428p:plain

ポップアップが表示され、変更箇所にコミットのハッシュ値が表示されます。
f:id:iucstscui:20200508002608p:plain

まとめ

変更された行の情報が確認できるgit blameを紹介しました。なぜ変更されたのか経緯を調べるために便利なコマンドです。GitLensが使えるVSCodeが一番扱いやすそうでした。