找出兩個 Git 分支之間的差異
一、概述
在本教程中,我們將發現查找兩個git
分支之間差異的方法。我們將探索git diff
命令並在分支比較中使用它。
2. 在單個命令中比較分支
git diff
是一個有用的命令,它允許我們比較不同類型的 git 對象,例如文件、提交、分支等等。當我們需要比較兩個分支之間的差異時,這使得git diff
成為一個不錯的選擇。
為了比較分支,我們在git diff
命令之後指定兩個分支的名稱:
$ git diff branch1 branch2
diff --git a/file1.txt b/file1.txt
index 3b18e51..c28f4fa 100644
--- a/file1.txt
+++ b/file1.txt
@@ -1 +1 @@
-hello world
+hello from branch2
讓我們檢查一下輸出。第一行diff ‐‐git a/file1.txt b/file1.txt
顯示分支中哪些文件不同。在我們的示例中,它是文件file1.txt,
它表示為 branch1 的 a/ a/file1.txt
branch1,
而b/file1.txt
是branch2
的同一個文件。
下一行顯示兩個分支中file1.txt
的索引緩存編號。然後,有幾行顯示添加內容的文件名和刪除內容的文件名。
最後,最重要的行在輸出的末尾,我們可以在其中看到確切的修改行。我們可以看到,來自branch1
的文件file1.txt
中的“hello world”
行被 branch2 中的“hello from branch2”
branch2
替換。
3. 只顯示文件名
儘管我們在上面的示例中發現了兩個分支之間的差異,但顯示每一行的更改可能會很不方便。通常,我們只想查看已更改文件的名稱。
為了只顯示兩個分支之間不同的文件名,我們在git diff
命令中使用‐‐name-only
選項:
$ git diff branch1 branch2 --name-only
file1.txt
現在,輸出只顯示兩個分支中不同的文件名。在我們的例子中,它只是一個文件file1.txt
。
4. 比較分支的另一種方法
在上面的示例中,我們使用單個git diff
命令來查找分支之間的差異。但是,我們必須在此命令中指定兩個分支的名稱。如果我們從其中一個分支中進行比較,有時會感覺更直觀。
要簽出分支,我們使用[git checkout](https://git-scm.com/docs/git-checkout)
命令。之後,我們只需要diff
另一個分支並查看相對於我們當前分支的所有更改。
例如,讓我們比較branch2
中的branch1
和branch2
:
$ git checkout branch2
$ git diff branch1
我們現在應該能夠看到與之前相同的輸出。
5. 從共同祖先中尋找差異
到目前為止,我們正在比較兩個分支的最新狀態。但是,有時我們需要將一個分支與另一個分支的共同祖先進行比較。
換句話說,我們可能需要找到分支與另一個分支相比的所有差異,因為它們是分支出來的。為了說明,讓我們看看下面的樹:
---A---B---C---D <== branch1
\
E---F <== branch2
我們想找出branch2
(當前提交位置 F)和branch1
在其提交位置 B 之間的差異。正如我們所見,在位置 B,兩個分支被分叉出來,然後它們彼此分開開發。在這種情況下,位置 B 是兩個分支的共同祖先。
要找到branch2
和branch1
共同祖先之間的差異,我們需要在分支名稱之間使用三個點:
git diff branch1...branch2
輸出將採用與之前類似的格式。但是,現在比較發生在branch2
和branch1
的共同祖先之間.
6. 找出提交哈希之間的差異
不僅可以顯示分支之間的差異,還可以顯示提交之間的差異。
其語法類似於分支比較。但是,我們需要指定要比較的提交哈希,而不是分支:
git diff b94a88bac17318fb3c3cc881d657c04de9fd7901 73ea8956375c10fe41c669ba8c6f6f9e01490452
輸出將採用與上述示例類似的格式。
7. 結論
在本文中,我們學習瞭如何使用git diff
命令查找兩個 git 分支之間的差異。
我們首先查看了使用單個命令比較分支。然後,我們發現瞭如何使用git checkout
命令比較其中一個分支中的分支。
最後,我們看到瞭如何將分支與共同祖先進行比較,以及發現提交之間的差異。