如何在 Git 中比較兩個分支?


協作者將使用多個分支來擁有清晰分離的程式碼庫。在某些時候,我們可能需要合併這些分支,以便將最終的工作合併到主分支中。在合併之前比較分支中的差異非常重要,以避免任何衝突。我們將看到幾種比較兩個分支的不同方法 -

  • 列出提交差異 - 此方法顯示在一個分支中存在但在另一個分支中不可用的提交。

  • 列出檔案更改 - 此方法比較分支並顯示兩個分支中特定檔案的確切差異。

從下圖我們可以很容易地理解儲存庫中有兩個分支,一個是master,另一個是feature分支。每個提交及其對應的提交訊息都顯示在圖中。從圖中可以清楚地看出,初始提交雜湊值為“9260faa”

可以使用以下命令獲取分支的類似圖形表示。

$ git log −−oneline feature −−all −−graph

在下面給出的輸出中,“*”表示一個提交,我們可以看到有 4 個星號,這意味著有 4 個提交。“9260faa”是初始提交。有兩個分支從初始提交開始,左側是 master 分支,右側是 feature 分支。

delI@DESKTOP-N961NR5 MINGW64 /e/tut_repo (master)
$ git log −−oneline feature −−all −−graph
* 0f26bbe (HEAD −> master) bonjour add
|* eOccfce (feature) howdy file add
|* 71b4d39 how are you added
|/
* 9260faa hello. txt

列出提交差異

在某些時候,feature 分支必須合併到 master,因為它是我們的主要工作線。使用git log命令列出提交差異的語法如下所示 -

$ git log <branch1>..<branch_2>

以下命令比較兩個分支並返回存在於feature分支但不存在於master分支中的提交。

$ git log master..feature −−oneline

輸出如下所示 -

e0ccfce (feature) howdy file add
71b4d39 how are you added

列出檔案差異

如果我們想根據對檔案執行的更改來比較兩個分支,我們需要使用diff工具。使用diff工具的語法如下 -

$ git diff <branch_name>

以下命令列出當前分支(master)feature分支中檔案的差異。

$ git diff feature

這將給出非常詳細的差異。如果我們不想檢視詳細的差異,但只需要知道哪些檔案不同,請使用−−name−only。這在下面的示例中顯示。

$ git diff −−name−only feature

輸出如下所示 -

bonjour.txt
hello.txt
howdy.text

−−name−status標誌可與 diff 工具一起使用以顯示檔名及其狀態。

$ git diff −−name−status feature

輸出如下所示。左列顯示檔案的狀態,右列顯示檔案的名稱。

  • 表示該檔案存在於當前分支中,但在另一個分支中不可用。

  • 表示該檔案已修改,並且其內容在兩個分支中不同。

  • 表示該檔案已從當前分支中刪除,但在另一個分支中可用。

dell@DESKTOP−N961NR5 MINGW64 /e/tut_repo (master)
S git diff −−name−status feature
A bonjour . txt
M hello. txt
D howdy. text

dell@DESKTOP−N961NR5 MINGW64 /e/tut_repo (master)
$ git diff −−name−only feature
bonjour. txt
hello.txt
howdy. text

更新時間: 2021年2月20日

2K+ 次瀏覽

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.