首先定義一個初始狀態(tài)
master 有三次提交??
m1->m2->m3
feature 從master m2的時候fork新分支耗啦,并提交一次
m1->m2 -> f1?
分別應用rebase和merge來合并分支看看有什么區(qū)別
如果 master分支 運行 git rebase feature 传透。那么master分支將會變成 m1-m2-f1-m3
rebase先找到公共父節(jié)點凉唐,然后將目標分支添加的內(nèi)容作為當前分支的父節(jié)點。操作會修改我當前分支的修改過的所有節(jié)點湿痢,仔細觀察兩個m3的hash值改變了涝缝。
如果 master分支 運行 git merge feature 。那么master分支將會變成 m1-m2-m3-f1-merge...
merge會創(chuàng)建一個新的提交譬重,并且不會改變之前的提交
結論:merge會多創(chuàng)建一個分支拒逮,git樹會看起來更復雜。而rebase會是更線性的結構
rebase不適合多個人同時開發(fā)的分支做操作臀规。因為某個同事rebase之后修改了所有的commit滩援。如果恰好另一個人也在開發(fā)這個分支很可能就找不到公共節(jié)點導致無法提交commit
============5月7日==============
git rebase的時候如果目標分支和當前分支有沖突,那么當前分支會解決分支生成新的commit提交以现『菰梗可能會導致其他人無法merge约啊,找不到公共父節(jié)點