在Git中合併分支有時可能是一項艱巨的任務,但是git merge
命令可以大大簡化這一過程。在本教程中,您將學習如何使用git merge
和領先的項目管理工具GitHub來合併分支的基本知識。
讓我們開始進入Git和GitHub的世界,重點是強大的git merge
命令。
掌握Git合併的前提條件
在深入研究git merge
的細節之前,確保您擁有以下設置:
- Git(本教程中使用的版本為2.25.1)-從Git的官方網站下載。
- A GitHub account – Sign up at GitHub.
- 一台Ubuntu機器(此處使用的是Ubuntu 20.04,但具有Git的任何操作系統都可以)。
初始化Git合併的項目
要有效地使用git merge
,首先需要一個Git項目。讓我們為練習設置一個演示項目。
1. 首先創建一個名為~/git-demo的新目錄,並進入其中:
2. 在~/git-demo目錄中創建一個index.html文件,內容如下。這個基本的HTML文件顯示了關於開始使用git merge
的消息。
3. 在您的項目目錄中初始化一個新的Git存儲庫:
git init
命令用於將現有的未版本化項目轉換為 Git 倉庫,或者用於使用 Git 開始一個新項目。

4. 在項目目錄中確認 .git 文件夾的創建。這個文件夾是 Git 跟踪變更的地方:

5. 使用 git add
命令將項目中的變更加入暫存區。通過將 index.html 文件加入暫存區,您為下一次提交做好了準備。
6. 使用 git status
確認您的文件是否正確加入暫存區。這個命令提供了當前工作目錄狀態的快照。

7. 接下來,使用 git commit
提交您的變更。這個命令將您的暫存區變更保存到本地倉庫,標誌著版本歷史的重要一步。

如果是第一次使用 Git,請使用以下命令設置您的 Git 身份:
git config --global user.email "[email protected]"
和git config --global user.name "Your Name"
。
8. 使用 git log
查看您的提交歷史。這個命令有助於跟踪變更,在準備進行 git merge
操作時非常重要。

9. 使用 git branch
確認倉庫中存在的分支。在執行 git merge
之前這一步至關重要。
注意:在最新的 Git 版本中,默認分支名稱為 ‘main’,替代了 ‘master’。

為 Git 合併操作創建分支
完成初始的Git設置並進行第一次提交後,現在是創建一個新分支的時候了。這個分支將用於有效演示git merge
的過程。
1. 更新index.html文件的內容,以演示分支中的更改。這個版本包含了用戶輸入字段,為了進行git merge
的演示做準備。
2. 使用git status
檢查存儲庫的狀態,查看index.html的更改。它應該顯示文件已修改但未提交,準備進入git merge
的下一步操作。

3. 使用git checkout -b form
創建一個名為“form”的新分支。這個命令不僅創建新分支,還將你的工作分支切換到“form”,這對於實現git merge
非常重要。

4. 執行git branch
確認新分支的創建。現在你應該看到“form”和“master”兩個分支,其中“form”是活動分支,用星號(*)標示。

5. 將更改提交到form分支。這個操作確保form分支反映了對index.html文件的最新更新,為有效的git merge
做好準備。

本地分支與 Git 合併
現在你的 GitHub 存儲庫中有不同的分支,下一步是將它們合併。本節將重點介紹使用 git merge
命令在本地合併分支,這是 Git 的基本操作。
1. 開始合併,切換到 master
分支,該分支將接收來自 form
分支的更新:
2. 在 master
分支上,執行 git merge form
將 form
分支的更改合併到 master
分支。這是 git merge
過程中的關鍵步驟。

git merge
.3. 確認合併,確保你在 master
分支上,並檢查 index.html 的內容是否已更新。

git merge
.使用 Git Squash 簡化
在 Git 中,Squash 是一種用於整理提交歷史的技巧。當你有多個不必要的提交消息時,Squash 允許你將它們合併為一個全面的提交。這種做法在準備進行 git merge
時尤其有用。
現在讓我們通過對 form
分支上的 index.html 文件進行進一步更改,然後將這些更改合併。
1. 切換回form
分支以進行其他更改:
2. 通過添加表單標頭修改index.html。此步驟將創建一個在合併時將被合併的更改:
3. 使用清晰的消息對更改進行暫存和提交,描述更新的內容:

git merge
.
4. 通過添加新的輸入字段來增強form
分支中的index.html。此修改是為了準備進行有效的git merge
:
5. 使用明確的消息對這些更改進行暫存和提交,確保工作中的每一步都清楚地記錄下來,以便進行即將進行的git merge
:

git merge
.
6. 接下來,在index.html的表單下插入一個段落元素,進一步修改文件以準備進行git merge
:
7. 再次暫存和提交更改,使用能夠捕捉此更新精髓的消息,這對於git merge
過程至關重要:

git merge
.
8. 使用交互模式的git rebase
查看並編輯最近的提交。此步驟對於整理提交以進行清潔的git merge
非常重要:
9. 在交互模式中,選擇對第一個提交進行reword
操作,並將後續的提交進行squash
操作。這將合併您的提交歷史,使您的git merge
更加整潔有序:

git merge
.
10. 在重新命名並保存後,更新合併後的提交消息以反映累積的更改。此步驟完成了合併提交的壓縮過程,為您打造了一個流暢的git merge
。

git merge
.確認壓縮操作的成功,這是處理多個提交訊息時git merge
過程的一個重要部分。

git squash
operation.要同時進行壓縮和合併,使用git merge --squash
。這種技術將form分支壓縮合併到master分支,有效地結合提交。
執行git merge --squash
命令將form
分支的更改合併到master
,同時將所有提交壓縮成一個。這種方法是有效的git merge
策略的一部分。

git merge
with squash option.實施Git合併的快速轉寄
對於簡化的提交歷史,快速轉寄是一種理想的方法,特別適用於小型更新或錯誤修復。它允許您在不添加其他合併提交的情況下合併分支,保持一個乾淨、線性的歷史,這對於高效的git merge
過程至關重要。
當基本分支(通常是master
)沒有分歧時,就會發生快速轉寄,這樣可以無縫地集成歷史和指標更新。
1. 切換到form
分支以開始快速轉寄過程:
2. 創建並更新一個JavaScript文件,例如index.js,在form
分支中暫存並提交更改:
3. 最後,使用快速轉寄方法將form
分支合併到master
。這一步將主分支與form分支的最新更改對齊,創建一條平滑、線性的git merge
路徑。

結論
此教程已指导您通过使用git merge
结合分支的各种技术。从合并提交到快进合并,这些方法增强了您在Git中协同管理项目的能力。
现在具备这些技能,考虑在GitHub上为协作项目做出贡献,将您对git merge
的知识应用于实际场景。