はじめに
この実験では、Git のブランチが別のブランチにマージされたかどうかを効果的に確認する方法を学びます。git branch --merged コマンドを使用した主要な方法を調べ、その使い方を示し、出力結果を解釈します。
さらに、Git ログを調べてマージコミットの有無を確認することでマージ状態を検証し、マージされていないブランチでコマンドの動作をテストして理解を深めます。この実践的なアプローチにより、自信を持って Git ブランチを管理し、クリーンなリポジトリを維持するスキルを身につけることができます。
git branch --merged を使用して確認する
このステップでは、git branch --merged コマンドを使って、現在のブランチに完全に統合されたブランチを確認する方法を学びます。このコマンドは、リポジトリを整理し、プロジェクトの状態を把握するのに非常に役立ちます。
まず、プロジェクトディレクトリにいることを確認しましょう。ターミナルを開き、my-time-machine ディレクトリに移動します。
cd ~/project/my-time-machine
次に、新しいブランチを作成し、そのブランチでコミットを行いましょう。これは、別のブランチで機能を開発する一般的なワークフローをシミュレートします。
git branch feature/add-greeting
git checkout feature/add-greeting
echo "Greetings from the feature branch!" >> greeting.txt
git add greeting.txt
git commit -m "Add greeting file"
コミット後、以下のような出力が表示されるはずです。
[feature/add-greeting a1b2c3d] Add greeting file
1 file changed, 1 insertion(+)
create mode 100644 greeting.txt
次に、master ブランチに戻りましょう。
git checkout master
ブランチが切り替わったことを示す出力が表示されるはずです。
Switched to branch 'master'
次に、feature/add-greeting ブランチを master ブランチにマージしましょう。
git merge feature/add-greeting
マージが成功したことを示す出力が表示されるはずです。
Updating a1b2c3d..e4f5g6h
Fast-forward
greeting.txt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 greeting.txt
feature/add-greeting ブランチを master ブランチにマージしたので、git branch --merged を使って、現在のブランチ (master) にマージされたブランチを確認しましょう。
git branch --merged
以下のような出力が表示されるはずです。
* master
feature/add-greeting
* は現在のブランチ (master) を示しています。出力には master と feature/add-greeting の両方が表示されています。これは、feature/add-greeting のすべてのコミットが master ブランチに含まれていることを意味します。
どのブランチがマージされたかを理解することは、不要になったブランチを特定し、安全に削除できるようにするために重要です。これにより、リポジトリをクリーンで整理された状態に保つことができます。
git log でマージコミットを確認する
前のステップでは、feature/add-greeting ブランチを master ブランチにマージしました。次に、git log コマンドを使ってコミット履歴を確認し、マージコミットが存在することを確認しましょう。
まだ ~/project/my-time-machine ディレクトリにいることを確認してください。
git log コマンドを実行します。
git log
最新のコミットが一番上に表示されるコミットのリストが表示されるはずです。マージを示すコミットメッセージを探してください。おそらく以下のようなものになります。
commit e4f5g6h7i8j9k0l1m2n3o4p5q6r7s8t9u0v1w2x (HEAD -> master)
Merge: a1b2c3d f0e1d2c
Author: Jane Doe <jane.doe@example.com>
Date: Mon Aug 7 10:05:00 2023 +0000
Merge branch 'feature/add-greeting'
commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (feature/add-greeting)
Author: Jane Doe <jane.doe@example.com>
Date: Mon Aug 7 10:03:00 2023 +0000
Add greeting file
commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <jane.doe@example.com>
Date: Mon Aug 7 10:00:00 2023 +0000
Send a message to the future
「Merge branch 'feature/add-greeting'」というメッセージのコミットに注目してください。これは、feature/add-greeting ブランチを master ブランチにマージしたときに Git が自動的に作成したマージコミットです。このコミットには、「Merge:」行で示される 2 つの親コミットがあります。一方の親はマージ前の master ブランチの先頭で、もう一方は feature/add-greeting ブランチの先頭です。
git log コマンドは、プロジェクトの履歴を理解するために不可欠です。このコマンドを使うと、すべてのコミット、誰がコミットしたか、いつコミットされたか、そして各コミットに含まれる変更内容を確認できます。これは、デバッグ、進捗状況の追跡、および他の人とのコラボレーションに非常に役立ちます。
q を押してログビューを終了します。
未マージのブランチでテストする
前のステップでは、git branch --merged が完全に統合されたブランチを表示する方法を見ました。次に、現在のブランチにマージされていないブランチがある場合にどうなるかを見てみましょう。
~/project/my-time-machine ディレクトリにいて、master ブランチにいることを確認してください。git status でこれを確認できます。
feature/add-farewell という名前の新しいブランチを作成し、そのブランチに切り替えましょう。
git branch feature/add-farewell
git checkout feature/add-farewell
ブランチが切り替わったことを示す出力が表示されるはずです。
Switched to branch 'feature/add-farewell'
次に、新しいファイルを作成し、このブランチでコミットを行いましょう。
echo "Farewell from the farewell branch!" > farewell.txt
git add farewell.txt
git commit -m "Add farewell file"
コミット後、以下のような出力が表示されるはずです。
[feature/add-farewell a1b2c3d] Add farewell file
1 file changed, 1 insertion(+)
create mode 100644 farewell.txt
次に、master ブランチに戻りましょう。
git checkout master
ブランチが切り替わったことを示す出力が表示されるはずです。
Switched to branch 'master'
現在、master ブランチにいます。そして、feature/add-farewell ブランチには master ブランチに存在しないコミットが含まれています。
再度 git branch --merged を使ってみましょう。
git branch --merged
以下のような出力が表示されるはずです。
* master
feature/add-greeting
feature/add-farewell が出力に含まれていないことに注意してください。これは、feature/add-farewell で行ったコミットが master ブランチにマージされていないためです。
次に、git branch --no-merged コマンドを使ってみましょう。このコマンドは、現在のブランチにマージされていないブランチを表示します。
git branch --no-merged
以下のような出力が表示されるはずです。
feature/add-farewell
この出力は、feature/add-farewell が master ブランチに含まれていないコミットを持っているため、正しく feature/add-farewell を表示しています。
git branch --merged と git branch --no-merged コマンドは、ブランチを管理するための強力なツールです。これらのコマンドは、どのブランチが完了して削除できるか、どのブランチがまだ開発中でマージが必要かを追跡するのに役立ちます。
まとめ
この実験では、Git のブランチが現在のブランチにマージされているかどうかを確認する方法を学びました。まず、git branch --merged コマンドを使用しました。このコマンドは、先頭が現在のブランチの先頭から到達可能なすべてのブランチをリストアップし、実質的に完全に統合されたブランチを表示します。新しいブランチを作成し、コミットを行い、それを master ブランチにマージしてから、git branch --merged を使用してマージを確認することでこれを実証しました。
また、git log を使用してマージコミットを探すことでマージを検証する方法を調べ、未マージのブランチでコマンドをテストして出力の違いを理解しました。この実践的な経験を通じて、Git コマンドを使用してリポジトリ内のブランチの状態を管理し理解する方法を実際に学ぶことができました。



