Git
章節 ▾ 第二版

A3.4 附錄 C:Git 命令 - 分支與合併

分支與合併

在 Git 中,實作大多數分支與合併功能的命令只有少數幾個。

git branch

git branch 命令實際上是一種分支管理工具。它可以列出您擁有的分支、建立新分支、刪除分支以及重新命名分支。

大部分的Git 分支都專注於 branch 命令,並且在整個章節中都會用到。我們首先在建立新分支中介紹它,並在分支管理中介紹它的大部分其他功能(列出和刪除)。

追蹤分支中,我們使用 git branch -u 選項來設定追蹤分支。

最後,我們在Git 參考中介紹它在背景中執行的一些操作。

git checkout

git checkout 命令用於切換分支,並將內容檢出到您的工作目錄中。

我們在切換分支中首次遇到此命令,以及 git branch 命令。

我們在追蹤分支中看到如何使用 --track 旗標來開始追蹤分支。

我們在檢出衝突中使用它,以 --conflict=diff3 重新引入檔案衝突。

我們在揭秘 Reset中詳細介紹它與 git reset 的關係。

最後,我們在HEAD中介紹一些實作細節。

git merge

git merge 工具用於將一個或多個分支合併到您已檢出的分支中。然後,它會將目前分支推進到合併的結果。

git merge 命令首次在基本分支中介紹。儘管它在書中的各個地方都有使用,但 merge 命令的變體很少,通常只是 git merge <branch>,其中包含您要合併的單個分支的名稱。

我們在公開專案分支的最後介紹如何執行壓縮合併(Git 合併工作,但假裝這只是一個新提交,而不記錄您要合併的分支的歷史記錄)。

我們在進階合併中介紹了許多關於合併程序和命令的內容,包括 -Xignore-space-change 命令和 --abort 旗標,以中止有問題的合併。

如果您的專案正在使用 GPG 簽章,我們學習瞭如何在簽署提交中合併之前驗證簽章。

最後,我們在子樹合併中學習瞭子樹合併。

git mergetool

如果您在 Git 中遇到合併問題,git mergetool 命令只會啟動外部合併輔助工具。

我們在基本合併衝突中簡要提及它,並在外部合併和差異工具中詳細介紹如何實作您自己的外部合併工具。

git log

git log 命令用於顯示從最新提交快照向後專案可到達的已記錄歷史記錄。預設情況下,它只會顯示您目前所在分支的歷史記錄,但可以從中遍歷不同的或甚至是多個頭或分支。它也經常被用來顯示提交層級上兩個或多個分支之間的差異。

這個指令幾乎在本書的每一章都有使用,用來展示專案的歷史記錄。

我們在檢視提交歷史中介紹並深入探討這個指令。在那裡,我們檢視了 -p--stat 選項,以了解每次提交引入了哪些內容,以及 --pretty--oneline 選項,以更簡潔地檢視歷史記錄,以及一些簡單的日期和作者篩選選項。

建立新分支中,我們使用 --decorate 選項來輕鬆視覺化分支指標的位置,並且使用 --graph 選項來查看發散的歷史記錄是什麼樣子。

私人小型團隊提交範圍中,我們介紹了 branchA..branchB 語法,以便使用 git log 指令來查看相對於另一個分支,某個分支特有的提交。在提交範圍中,我們相當廣泛地探討了這個。

合併日誌三個點中,我們介紹了如何使用 branchA…​branchB 格式和 --left-right 語法,來查看一個分支或另一個分支中存在,但兩者都不存在的部分。在合併日誌中,我們還研究了如何使用 --merge 選項來幫助解決合併衝突的除錯,以及如何使用 --cc 選項來查看歷史記錄中的合併提交衝突。

RefLog 短名稱中,我們使用 -g 選項來透過此工具檢視 Git reflog,而不是進行分支遍歷。

搜尋中,我們研究了如何使用 -S-L 選項來對程式碼中歷史上發生的事情進行相當複雜的搜尋,例如查看函數的歷史記錄。

簽署提交中,我們了解如何使用 --show-signature 來根據是否有效簽署,在 git log 輸出中的每個提交中新增驗證字串。

git stash

git stash 指令用於暫時儲存未提交的工作,以便清理您的工作目錄,而無需在分支上提交未完成的工作。

這基本上完全涵蓋在儲藏與清理中。

git tag

git tag 指令用於為程式碼歷史記錄中的特定點提供永久書籤。通常這用於像是發布版本之類的事情。

這個指令在標籤中介紹和詳細說明,並且我們在標記您的版本中實際使用它。

我們還在簽署您的工作中介紹了如何使用 -s 標誌建立 GPG 簽署的標籤,並使用 -v 標誌驗證標籤。

scroll-to-top