git diffでブランチ間の差分を取得するーブランチを指定する順番について

git diffでブランチ間の差分を取得・確認する方法について記載します。

git diffは、Gitのコマンドで、異なるコミットやブランチ間の差分を表示するためのコマンドです。

この記事はブランチ間の差分について、ブランチを指定する順番に気をつけようという記事です。

git diffでのブランチの指定順序

git diff {古いブランチ} {最新ブランチ}

上記のように使います。

例えば、「old_branch」と「new_branch」がある場合、以下のような感じです。

git diff old_branch new_branch

動作確認してみます!

動作を確認してみる

以下の操作をした場合の動作を見てみます。

  • 「old_branch」:test.txtを作成
  • 「new_branch」:test.txtを削除
# 動作確認用ディレクトリ作成
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 old_branch new_branch:ファイル削除された
  • git diff new_branch old_branch:ファイル作成された

と逆の結果となります。

まとめ

git diff でブランチ間の差分をとるとき、ブランチの指定する順番により、取得できる差分が異なります。

基本的には以下の順番でブランチを指定して、差分を取ることにより、時系列的に正しい差分が取得できます。詳細は上記の「動作を確認してみる」をご参照ください。

git diff {古いブランチ} {最新ブランチ}

ドットを使った比較

git diff branch_A..branch_B

git diff branch_A...branch_B

については以下の記事をご参照ください

git diffのドットの意味するものー「..(ドット2つ)」と「...(ドット3つ)」の違い
git diffの..(ドット2つ)と...(ドット3つ)の違いについて見ていきます。 ドット2つは 「git diff branch_A..branch_B」 のようなコマンドです。 ドット3つは 「git diff branch_A...branch_B」 のようなコマンドです。

↓git コマンドリファレンス↓

Git - Reference