合併分支【分支】 | 連猴子都能懂的Git入門指南 - Backlog

文章推薦指數: 80 %
投票人數:10人

Merge. 使用merge,可以合併多個歷史記錄。

如下圖所示bugfix 分支是從master 分支分開出來的。

分支. 完成作業的Topic分支,最終都會合併到Integration分支。

合併分支有2種方法:使用「merge」或「rebase」。

根據使用的方法合併後的分支歷史記錄有很大的差別。

Merge 使用merge,可以合併多個歷史記錄。

如下圖所示bugfix分支是從master分支分開出來的。

合併bugfix分支到master分支時,如果master分支的狀態是沒有更改過的話,那麼這個合併是非常簡單的。

bugfix分支的歷史記錄包含了master分支的歷史記錄,所以只要把bugfix移動到master分支就可以導入bugfix分支的內容。

這樣的合併被稱為fast-forward(快轉)合併。

但是,master分支的歷史記錄有可能在bugfix分支分開後有新的修改。

這時候,要把master分支的修改內容和bugfix分支的修改內容匯合起來。

匯合兩個修改時會產生一個名為「合併提交」的提交。

Master的位置會被更新到新建立的合併提交上。

Note 執行合併時,使用nonfast-forward參數選項,即使是可以fast-forward的合併也會建立新的提交並合併喔。

執行nonfast-forward的合併後,分支會維持原狀,要調查在這個分支裡的操作就容易多了。

Rebase 和merge的例子一樣,如下圖所示bugfix分支是從master分支分開出來的。

使用rebase進行分支合併的話會出現下圖所顯示的歷史記錄。

現在來簡單的講解一下合併的流程吧。

首先,rebasebugfix分支到master分支。

bugfix分支的歷史記錄會增加在master分支的後面。

因此,如圖所示歷史記錄會被統一,形成簡單的一條線。

移動提交X和Y有可能會發生衝突,所以需要修改各自提交時發生衝突的部分。

執行Rebase時,master的位置不變,因此,待master分支合併bugfix分支後,master的HEAD會移動到bugfix的HEAD這裡。

Note Merge和rebase都是合併歷史記錄,但是結果不同。

Merge修改內容的歷史記錄會維持原狀,但是合併後的歷史紀錄會變得更複雜。

Rebase修改內容的歷史記錄會接在要合併的分支後面,合併後的歷史記錄會比較清楚簡單,但是,會比使用merge更容易發生衝突。

您可以根據團隊的需求分別使用merge和rebase。

例如,您想要簡化歷史記錄,您可以試試看以下的操作: 當您想要從integration分支導入最新變更時,您可以在topic分支上使用rebase。

當您想要合併topic分支上的變更到integration分支時,您可以先在topic分支上使用 rebase,接著再將topic分支上的變更合併到integration分支。

分支(branch) 什麼是分支? 分支的運用 分支的切換 分支的合併 Topic分支和integration分支的運用實例 教學1使用分支 0.事前準備 1.建立分支 2.切換分支 3.合併分支 4.刪除分支 5.平行操作 6.解決合併的衝突 7.用rebase合併 遠端數據庫 Pull Fetch Push 標籤 標籤 教學2使用標籤 0.事前準備 1.添加輕量標籤 2.添加標示標籤 3.刪除標籤 改寫提交 修改最近的提交 取消過去的提交 放棄提交 提取提交 改寫提交的記錄 匯合分支上的提交一同合併 教學3改寫提交 1.Commit--amend 2.Revert 3.Reset 4.Cherry-pick 5.使用rebase-i合併提交 6.使用rebase-i修改提交 7.Merge--squash UP



請為這篇文章評分?