HOWTO · Git

Git コミット履歴で特定の文字列を検索する

特定の文字列の Git コミット履歴を検索できます。

この記事では、Git 履歴から特定の文字列を検索するために使用するさまざまな方法について概説します。

履歴内のコミット メッセージをざっと目を通しても、必ずしもうまくいくとは限りません。 特定の変数または文字列によってどのコミットが影響を受けたかを知りたい場合があります。

git log コマンドにいくつかの引数を追加して文字列を検索できます。Git は、リポジトリの履歴から文字列を追加または削除しているコミットを提供します。 この機能により、特定のコードのコミット コンテキストを簡単に理解できるようになります。

Git コミット履歴で特定の文字列を検索する

最初のシナリオでは、コミット メッセージに Update という単語が含まれるすべてのコミットを検索します。 これについてどうすればよいでしょうか?

以下に示すように、git log コマンドを実行します。

$ git log --grep=Update

出力:

文字列の Git 履歴を検索 - 出力 1

上記の出力からわかるように、Git は Update という単語を含むコミットのみを提供しました。

ファイル内で "php" 文字列が追加または削除されたコミットを検索したいとします。 どうすればいいですか?

以下に示すように、-S フラグを指定して git log コマンドを実行できます。

$ git log -S "php"

出力:

文字列の Git 履歴を検索 - 出力 2

これの差分を取得するには、次のコマンドを実行します。

$ git log -S "php" -p | grep "php" -C5

文字列のコミットが多い場合は、difftool を使用することをお勧めします。 Git は大量の出力を返すため、混乱する可能性があります。

以下に示すように、-G 引数を指定して git log コマンドを使用して、追加または削除された行が "php" と一致する相違点を検索することもできます。

$ git log -G "php"

ノート:

  1. -G は正規表現を受け入れ、-S は文字列を受け入れます。
  2. -S 引数は単語が変更されたコミットを見つけますが、-G は差分内の単語を検索します。

git log コマンドに引数を追加して、出力を操作できます。 一般的なシナリオを使用して、コミット履歴で文字列を検索する方法について説明しました。