Git ブランチが特定のコミットを持っているかどうかを確認する方法

GitGitBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Git ブランチに特定のコミットが含まれているかどうかを確認する方法を学びます。まず、git log コマンドとそのフィルタリングオプションを調べ、メッセージ内容や作者に基づいてコミットを検索します。次に、git branch --contains コマンドを使用して、特定のコミットが含まれているブランチを効率的に特定します。最後に、コミットのハッシュを使用して直接コミットの存在を確認することで、調査結果を検証します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BranchManagementGroup -.-> git/branch("Handle Branches") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/add -.-> lab-560039{{"Git ブランチが特定のコミットを持っているかどうかを確認する方法"}} git/commit -.-> lab-560039{{"Git ブランチが特定のコミットを持っているかどうかを確認する方法"}} git/branch -.-> lab-560039{{"Git ブランチが特定のコミットを持っているかどうかを確認する方法"}} git/log -.-> lab-560039{{"Git ブランチが特定のコミットを持っているかどうかを確認する方法"}} end

git log を実行してコミットを検索する

このステップでは、git log コマンドを使用してプロジェクトの履歴から特定のコミットを検索する方法を学びます。プロジェクトが成長し、コミットが増えるにつれて、git log の出力は非常に長くなることがあります。Git はこの履歴をフィルタリングして検索するための強力なオプションを提供しています。

まず、プロジェクトディレクトリにいることを確認しましょう。

cd ~/project/my-time-machine

次に、検索対象となる履歴を作成するために、いくつかのコミットを追加しましょう。新しいファイルを追加し、既存のファイルに変更を加えます。

新しいファイルを作成します。

echo "This is my second file." > second_file.txt

新しいファイルを追加してコミットします。

git add second_file.txt
git commit -m "Add a second file"

以下のような出力が表示されるはずです。

[master a1b2c3d] Add a second file
 1 file changed, 1 insertion(+)
 create mode 100644 second_file.txt

次に、message.txt ファイルを変更します。

echo "Adding another line." >> message.txt

変更を追加してコミットします。

git add message.txt
git commit -m "Update message.txt"

以下のような出力が表示されるはずです。

[master e4f5g6h] Update message.txt
 1 file changed, 1 insertion(+)

これで複数のコミットがある状態になったので、git log を使用して履歴を表示しましょう。

git log

3 つのコミットがすべて表示されます。ログビューを終了するには q を押します。

コミットメッセージに特定の単語が含まれるコミットを検索するには、--grep オプションを使用できます。「message」という単語が含まれるコミットを検索してみましょう。

git log --grep "message"

このコマンドは、メッセージに「message」という単語が含まれるコミットのみを表示します。最初と 3 番目のコミットが表示されるはずです。

また、--author オプションを使用して、作者によるコミットを検索することもできます。「Jane Doe」(セットアップで設定した名前)によるコミットを検索してみましょう。

git log --author "Jane Doe"

これにより、「Jane Doe」によるすべてのコミットが表示されます。この場合、3 つのコミットすべてが表示されるはずです。

--grep--author などのオプションを使用した git log は、大規模なプロジェクトを操作し、特定の変更や貢献を見つけるために不可欠です。これは、プロジェクトの履歴に対する強力な検索エンジンのようなものです!

git branch --contains を使用してコミットを確認する

このステップでは、git branch --contains コマンドを使用して、特定のコミットが含まれているブランチを見つける方法を学びます。複数のブランチがあり、特定の変更がどこに存在するかを知りたい場合に便利です。

まず、プロジェクトディレクトリにいることを確認しましょう。

cd ~/project/my-time-machine

このコマンドをデモンストレーションするために、新しいブランチを作成しましょう。feature-branch という名前にします。

git branch feature-branch

このコマンドは新しいブランチを作成しますが、そのブランチに切り替えることはありません。git branch を使用してブランチを表示できます。

git branch

以下のような表示がされ、master がハイライトされているはずです(現在のブランチを示しています)。

* master
  feature-branch

次に、最初のコミットのハッシュを取得しましょう。git log --oneline を使用して、コミットハッシュ付きの簡略化されたログを表示できます。

git log --oneline

以下のような出力が表示されます(ハッシュは異なります)。

e4f5g6h (HEAD -> master) Update message.txt
a1b2c3d Add a second file
abcdef0 Send a message to the future

最初のコミット("Send a message to the future")のハッシュをコピーします。上の例では、abcdef0 です。

次に、最初のコミットのハッシュを指定して git branch --contains を使用しましょう。

git branch --contains abcdef0

abcdef0 を実際の最初のコミットのハッシュに置き換えてください。

出力には masterfeature-branch の両方が表示されるはずです。

* master
  feature-branch

これは、"Send a message to the future" というコミットが master ブランチと feature-branch ブランチの両方に存在することを示しています。これは、feature-branchmaster ブランチ上で作成し、最初のコミットはすでに master の一部であったため、理にかなっています。

次に、最後のコミット("Update message.txt")のハッシュを取得しましょう。上の例では、e4f5g6h です。

最後のコミットのハッシュを指定して git branch --contains を使用しましょう。

git branch --contains e4f5g6h

e4f5g6h を実際の最後のコミットのハッシュに置き換えてください。

出力には master のみが表示されるはずです。

* master

これは、最後のコミットは feature-branch を作成した master ブランチ上で行われたためです。したがって、feature-branch にはこのコミットは含まれていません。

git branch --contains コマンドは、コミットとブランチの関係を理解するための強力なツールであり、特定の変更がどこに統合されたかを追跡するのに役立ちます。

コミットハッシュで確認する

このステップでは、プロジェクトの履歴における特定のポイントを参照するためにコミットハッシュを使用する練習を行います。Git の各コミットには一意のハッシュがあり、これはコミットの指紋のようなものです。このハッシュを使用して、特定のコミットの詳細を表示したり、その時点に戻ったりすることができます。

まず、プロジェクトディレクトリにいることを確認しましょう。

cd ~/project/my-time-machine

コミットハッシュを取得するために、再度コミットログを表示しましょう。

git log --oneline

以下のような出力が表示されます(ハッシュは異なります)。

e4f5g6h (HEAD -> master) Update message.txt
a1b2c3d Add a second file
abcdef0 Send a message to the future

次に、最初のコミットのハッシュを使用してその詳細を表示しましょう。最初のコミット("Send a message to the future")のハッシュをコピーします。上の例では、abcdef0 です。

git show コマンドに続けてコミットハッシュを指定します。

git show abcdef0

abcdef0 を実際の最初のコミットのハッシュに置き換えてください。

このコマンドは、その特定のコミットに関する詳細情報を表示します。これには、作者、日付、コミットメッセージ、およびそのコミットで導入された変更が含まれます。このコミットで message.txt ファイルが作成されたことがわかります。

q を押して git show の表示を終了します。

次に、2 番目のコミット("Add a second file")の詳細を表示しましょう。git log --oneline の出力からそのハッシュをコピーします。上の例では、a1b2c3d です。

2 番目のコミットのハッシュを指定して git show を使用します。

git show a1b2c3d

a1b2c3d を実際の 2 番目のコミットのハッシュに置き換えてください。

これにより、2 番目のコミットの詳細が表示され、second_file.txt が作成されたことがわかります。

最後に、最後のコミット("Update message.txt")の詳細を表示しましょう。そのハッシュをコピーします。上の例では、e4f5g6h です。

最後のコミットのハッシュを指定して git show を使用します。

git show e4f5g6h

e4f5g6h を実際の最後のコミットのハッシュに置き換えてください。

これにより、最後のコミットの詳細が表示され、message.txt に一行が追加されたことがわかります。

コミットハッシュを指定して git show を使用することで、プロジェクトの履歴にある特定のコミットの内容と変更を調べることができます。これは、デバッグ、機能の実装方法の理解、または過去の作業のレビューに非常に役立ちます。

まとめ

この実験(Lab)では、Git ブランチが特定のコミットを含んでいるかどうかを確認する方法を学びました。まず、git log コマンドとそのフィルタリングオプションを調べました。たとえば、コミットメッセージを検索する --grep や、作者で検索する --author などを使って、プロジェクト履歴内のコミットを見つけました。

次に、git branch --contains コマンドを使って、ブランチが特定のコミットを含んでいるかどうかを直接確認する方法を学びます。最後に、コミットハッシュを使ってこれを検証します。