開発部

git blame を活用して改修履歴を素早く追う方法

開発部のSSです。

新しいプロジェクトに途中から参加して開発を始める際、まず何から手を付けるでしょうか?

最近の開発の流れを追う

自分は、まず git clone した後に、以下のコマンドを実行して直近のコミット履歴を確認するようにしています。

$ git log --stat

特に詳しく見たいコミットがある場合は、

$ git show <commit id>

で詳細を確認します。また、ざっくりとコードレベルで変更内容を把握したいときは  -p オプションを追加します。

$ git log --stat -p

これにより、どのファイルがどのように変更されたのかを効率よく確認できます。

改修箇所の前後のコードを git blame で調査する

改修箇所の目星をつけた後は、関連するファイルに対して git blame を実行し、変更履歴を確認します。

git log ではコミット履歴が時系列順に表示されるため、特定の行の変更履歴を追うのに手間がかかります。しかし、git blame を使えば、特定の行がどのコミットで変更されたかを直接確認できるため、非常に効率的です。

$ git blame <target_file>

これを活用することで、

  • その行が最後に修正されたタイミング
  • どのコミットで変更されたか
  • 誰がどの Issue で改修を行ったのか

などを素早く把握できます。

詳細なオプションについては、公式ドキュメントを参照してください。

git-blame – Git Documentation

Pull Request の番号を確認する

git blame を使うとコミット ID まで確認できますが、Pull Request の番号を知りたい場合もあります。

通常の git blame では直接確認できませんが、以下のコマンドを組み合わせることで、Pull Request の番号を追跡できます。

# マージコミットの場合に親コミットのみをたどる
$ git blame --first-parent <target_file>

# コミットの 1 行メッセージを表示
$ git show --oneline <commit id>

この結果、Merge pull request #123 のようなメッセージが確認できれば、その PR 番号を取得できます。

さらに、これを一括で実行できるスクリプト git-blame-pr.pl もあります。

Git Blame を活用する

このツールを利用すると、Pull Request 番号を簡単に特定でき、当時の改修経緯を効率よく追跡できます。

CLI が苦手な人は VSCode GitLens を活用

自分は CUI 操作が好きなので、ターミナル上で git コマンドを実行したり、Emacs 上で vc-annotate を利用して変更履歴を確認することが多いです。

vc-annotate – GNU Emacs Manual

しかし、最近の開発では VSCode を利用する人も多いのではないでしょうか?

VSCode では GitLens という拡張機能をインストールすることで、GUI 上で簡単に git blame の情報を確認できます。

GitLens – Visual Studio Marketplace

この拡張を使えば、直感的に変更履歴を確認できるため、CLI に慣れていない人にとっては非常に便利です。

とはいえ、内部で何が行われているのかを理解しておくと、VSCode が使えない環境でも対応できるため、覚えておくと役立つかもしれません。

それでは!

文:開発部SS