HOWTO · Git
Git でコミット履歴をフィルタリングする
プロジェクト内の特定のコミットを選択できます。
この記事では、コミット履歴をフィルタリングするために Git で使用できるさまざまなコマンドについて説明します。 git log コマンドを使用して、リポジトリのコミット履歴を確認します。
以下に示すように、git log コマンドといくつかの組み合わせを使用して、出力をフォーマットできます。
次の方法でコミット履歴をフィルタリングできます。
コミット履歴を金額でフィルタリングする
以下のコマンドを使用すると、git log コマンドによって表示されるコミットの数を制限できます。
$ git log -4
上記のコマンドは、リポジトリ内の最近の 4つのコミットを出力します。
最新のコミットをフィルタリングする
最新のコミットをフィルタリングするには、数を指定するだけです。 最新の 6つのコミットが必要な場合は、次を実行できます。
$ git log -6
コミット履歴を日付でフィルタリングする
--after および --before フラグを使用して時間枠を指定できます。 以下で説明するように、フラグはさまざまな形式を受け入れます。
$ git log --after="2022-7-27"
このコマンドは、2022 年 7 月 27 日 以降に作成したコミットのみを表示します。 以下に示すように、相対参照を渡すことができます。
$ git log --after="yesterday"
以下の例に示すように、--before と --after の両方を使用できます。
$ git log --after="2022-7-20" --before="2022-7-25"
--after と --before の代わりに、それぞれ --since と --until を使用できます。
作成者によるコミット履歴のフィルタリング
以下に示すように、--author フラグを git log コマンドに追加することで、特定の作成者からのコミットを表示できます。
$ git log --author="John"
上記のコマンドは、作者の名前に John という語句が含まれるコミットを表示します。 以下のような複雑な検索を行うことができます。
複数のユーザーによるコミット履歴のフィルタリング
以下のコマンドを使用して、コミット履歴を複数のユーザーでフィルタリングできます。
$ git log --author="John\|Ann"
このようなコマンドは、作成者の名前に John または Ann という語句が含まれるコミットを表示します。
特定のユーザーからのコミットを除外する
コマンドの例を次に示します。
$ git log --perl-regexp --author='^((?!Chris).*)$'
上記のコマンドは、作成者名に Chris が含まれていないすべてのコミットを表示します。
結論として、上記は私たちが使用する最も一般的なフィルタリング オプションです。 ただし、出力を除外するために git log コマンドにフィードできるパラメーターは他にもあります。
メッセージ、範囲、ファイル、およびコンテンツでフィルタリングすることもできます。