git merge和git rebase的功能是類似的,它們都被設(shè)計來將一個分支的更改合并入另一個分支。
1.? git merge
將master分支合并到feature分支,最簡單的辦法就是使用以下命令:
git checkout feature
git merge master
或者,你也可以把它們壓縮到一行里:
git merge master feature
merge master into the feature branch
feature分支會產(chǎn)生一個新的commit,包含了master分支的變更。
merge是一個安全的操作,現(xiàn)有的分支不會被更改,避免了rebase 的潛在缺點。另一方面,這同樣意味著每次merge時feature分支都會引入一個外來的merge commit,如果master分支非?;钴S的話,這或多或少會污染你的分支歷史,從而增加理解項目歷史的難度。
2. git rebase
作為merge操作的替代選擇,你可以像下面這樣將feature分支并入master:
git checkout feature
git rebase master
它會把feature分支整體移動到master分支后面,有效的把master分支上所有新的commit都合并到feature分支上。因此rebase重寫了feature分支的項目歷史。
rebase the feature branch onto master
rebase最大的優(yōu)勢是你的項目歷史會非常的簡潔,它不像git merge那樣產(chǎn)生新的提交,并且如圖所示,rebase導(dǎo)致你的項目歷史呈現(xiàn)出完美的線性結(jié)構(gòu),這讓你更容易使用git log,git bisect,gitk查看項目歷史。