Git中merge和rebase的區別

簡介

Git中,rebase和merge操做都是將一個分支的更改合併到另外一個分支中,可是方式不一樣。git

舉個例子:如今有兩個分支master和feature,分別有以下提交:code

git merge featurecdn

merge操做將會自動產生一個新的commit,記錄此次合併的提交信息,merge操做記錄了真實的commit狀況,包括每一個分支的詳情。blog

git rebase feature開發

rebase將從主分支的最後一次提交開始添加feature分支中的全部更改。it

注意事項

  • 若是您想查看與發生時徹底相同的歷史記錄,您應該使用merge。merge會保存歷史記錄,而rebase重寫歷史記錄。
  • 若是feature分支的更改與其餘開發人員共享,則不建議使用rebase,由於rebase過程將建立不一致的倉庫。
  • rebase更好地簡化了複雜的提交記錄,也能夠經過交互式rebase更改提交歷史:能夠刪除不須要的commit、將兩個或多個commit壓縮到一個commit、編輯commit消息等。
  • merge一次性展現全部衝突,而Rebase每次展現一次commit時的衝突。rebase能夠更好的處理衝突,可是帶來的問題是,若是想要還原(revert)一次rebase操做就會變得十分困難。

The Golden Rule of Rebasing rebase

never use it on public branches(不要在公共分支上使用)io

總結

若是你想要一個乾淨的,沒有merge commit的線性歷史樹,那麼你應該選擇git rebase 若是你想保留完整的歷史記錄,而且想要避免重寫commit history的風險,你應該選擇使用git mergeast

相關文章
相關標籤/搜索