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 コマンドにフィードできるパラメーターは他にもあります。

メッセージ、範囲、ファイル、およびコンテンツでフィルタリングすることもできます。