章節 ▾ 第二版

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>,其中 <branch> 是你要合併的單個分支的名稱。

我們在派生公共專案的最後介紹瞭如何進行壓縮合並(Git 合併了工作,但假裝它只是一個新提交,而不記錄你正在合併的分支的歷史)。

我們在高階合併中詳細介紹了合併過程和命令,包括 -Xignore-space-change 命令和 --abort 標誌,用於中止問題合併。

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

最後,我們在子樹合併中瞭解了子樹合併。

git mergetool

git mergetool 命令只是在你在 Git 中遇到合併問題時啟動一個外部合併助手。

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

git log

git log 命令用於從最新的提交快照開始向後顯示專案可達的記錄歷史。預設情況下,它只顯示你當前所在分支的歷史,但可以給定不同的甚至多個 HEAD 或分支來進行遍歷。它也常用於在提交層面顯示兩個或多個分支之間的差異。

本書幾乎每一章都使用此命令來演示專案的歷史。

我們在檢視提交歷史中介紹了此命令並深入講解。在那裡,我們查看了 -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