git | さゆフィクション http://it.kensan.net/it aws wordpress などなどゆるーく書いてます Fri, 28 Apr 2023 12:03:12 +0000 ja hourly 1 https://wordpress.org/?v=6.5.2 https://it.kensan.net/wp-content/uploads/2023/03/cropped-icon-32x32.png git | さゆフィクション http://it.kensan.net/it 32 32 git merge-baseー共通の祖先コミットを探す(2つのブランチの分岐点を求める)方法 https://it.kensan.net/git-merge-base.html Thu, 09 Mar 2023 20:56:09 +0000 http://3.113.9.194/it/?p=714 git merge-baseコマンドについて書いていきます。

以下のコマンドで共通の祖先(2つのブランチの分岐点)を調べることができます。

git merge-base branch_A branch_B

merge-base は、Gitコマンドの一つで、2つのブランチやコミットの共通のもっとも新しい祖先コミットを見つけるために使用されます。

merge-baseは以下のような用途で使用します。

merge-baseの2つの使い方

マージやリベースの前に、2つのブランチやコミットに対して、共通の祖先コミットが存在するかどうかを確認する
コンフリクトの原因を理解するために使用

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

Git - git-merge-base Documentation
]]>
git diffのドットの意味するものー「..(ドット2つ)」と「…(ドット3つ)」の違い https://it.kensan.net/git-diff-dot.html Tue, 07 Mar 2023 00:14:02 +0000 http://3.113.9.194/it/?p=689 今回はgit diffについての記事です。

git diffの..(ドット2つ)と…(ドット3つ)の違いについて見ていきます。

ドット2つは

git diff branch_A..branch_B

のようなコマンドです。

ドット3つは

git diff branch_A...branch_B

のようなコマンドです。

ドット2つとドット3つの違いについて書いていきます!

git diffのドット2つについて

まずは、ドット2つについてです。

git diff branch_A..branch_B

これは以下のコマンドと同じとなります。

git diff branch_A branch_B

ブランチ間の差分を確認することができます。

上記の例では「branch_A」と「branch_B」の差分を確認できます。

詳しい挙動は以下の記事をご参照ください

git diffでブランチ間の差分を取得するーブランチを指定する順番について
git diff でブランチ間の差分をとるとき、ブランチの指定する順番により、取得できる差分が異なります。 基本的には「git diff {古いブランチ} {最新ブランチ} 」のようにブランチを指定して、差分を取ることにより、時系列的に正しい差分が取得できます。

次はドット3つについて記載します!

git diffのドット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でブランチ間の差分を取得するーブランチを指定する順番について https://it.kensan.net/git-diff-branch.html Mon, 06 Mar 2023 23:35:28 +0000 http://3.113.9.194/it/?p=695 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
]]>