以下のコマンドで共通の祖先(2つのブランチの分岐点)を調べることができます。
git merge-base branch_A branch_B
merge-base
は、Gitコマンドの一つで、2つのブランチやコミットの共通のもっとも新しい祖先コミットを見つけるために使用されます。
merge-base
は以下のような用途で使用します。
マージやリベースの前に、2つのブランチやコミットに対して、共通の祖先コミットが存在するかどうかを確認する
コンフリクトの原因を理解するために使用
↓Gitコマンドリファレンス↓
git diffの..(ドット2つ)と…(ドット3つ)の違いについて見ていきます。
ドット2つは
git diff branch_A..branch_B
のようなコマンドです。
ドット3つは
git diff branch_A...branch_B
のようなコマンドです。
ドット2つとドット3つの違いについて書いていきます!
まずは、ドット2つについてです。
git diff branch_A..branch_B
これは以下のコマンドと同じとなります。
git diff branch_A branch_B
ブランチ間の差分を確認することができます。
上記の例では「branch_A」と「branch_B」の差分を確認できます。
詳しい挙動は以下の記事をご参照ください
次はドット3つについて記載します!
ドット3つについて見ていきます。以下のようなコマンドです。
git diff branch_A...branch_B
git diff branch_A...branch_B
は、2つのブランチの一番近い共通の祖先(git merge-base branch_A branch_B)とbranch_B
の最新の変更と差分を表示します。
2つのブランチの一番近い共通の祖先とbranch_B
を比較しますので、ブランチを指定する順番が重要になってきますので、要注意です。
基本はドット2つの以下のdiffを使い、
git diff branch_A..branch_B
コミット履歴が異なるなど、何らかの理由で差分が正しく出てこない場合にドット3つを使う感じかと思います。
git diff branch_A...branch_B
git diffは、Gitのコマンドで、異なるコミットやブランチ間の差分を表示するためのコマンドです。
この記事はブランチ間の差分について、ブランチを指定する順番に気をつけようという記事です。
git diff {古いブランチ} {最新ブランチ}
上記のように使います。
例えば、「old_branch」と「new_branch」がある場合、以下のような感じです。
git diff old_branch new_branch
動作確認してみます!
以下の操作をした場合の動作を見てみます。
# 動作確認用ディレクトリ作成
mkdir git_test
# 動作確認用ディレクトリへ移動
cd git_test/
# gitを使えるように
git init
<branch 「old_branch」を作成>
# branch 「old_branch」作成
git checkout -b old_branch
# 「test.txt」を作成
touch test.txt
# addする
git add .
# commitする
git commit
<branch 「new_branch」を作成>
# branch 「new_branch」作成
git checkout -b new_branch
# 「test.txt」を削除
rm test.txt
# addする
git add .
# commitする
git commit
「git diff old_branch new_branch」でdiffをとってみる
<git diffしてみる>
git diff old_branch new_branch
# 結果
diff --git a/test.txt b/test.txt
deleted file mode 100644
ファイル削除された差分が出てくるのがわかる
→時系列的に正しい!!
比較するブランチの順番を入れ替えて「git diff new_branch old_branch」でdiffをとってみる
<git diffしてみる>
git diff new_branch old_branch
# 結果
diff --git a/test.txt b/test.txt
new file mode 100644
ファイル作成された差分が出てくるのがわかる
→時系列的に正しくない…
当たり前ですが
と逆の結果となります。
git diff でブランチ間の差分をとるとき、ブランチの指定する順番により、取得できる差分が異なります。
基本的には以下の順番でブランチを指定して、差分を取ることにより、時系列的に正しい差分が取得できます。詳細は上記の「動作を確認してみる」をご参照ください。
git diff {古いブランチ} {最新ブランチ}
ドットを使った比較
git diff branch_A..branch_B
や
git diff branch_A...branch_B
については以下の記事をご参照ください
↓git コマンドリファレンス↓