如何在 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
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP