-
A1. 附錄 A: Git 在其他環境
- A1.1 圖形介面
- A1.2 Visual Studio 中的 Git
- A1.3 Visual Studio Code 中的 Git
- A1.4 IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine 中的 Git
- A1.5 Sublime Text 中的 Git
- A1.6 Bash 中的 Git
- A1.7 Zsh 中的 Git
- A1.8 PowerShell 中的 Git
- A1.9 小結
-
A2. 附錄 B: 在應用程式中嵌入 Git
-
A3. 附錄 C: Git 命令
A3.4 附錄 C:Git 命令 - 分支與合併
分支與合併
Git 中只有少數幾個命令實現了大部分分支與合併功能。
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
輸出中為每個提交新增一個驗證字串。