git merge與 git rebase區別及實例


Git分支創建與合並,在分支合並時,有兩種方式:git merge 和git rebase。

git merge:將兩個分支,合並提交為一個新提交,並且新提交有2個parent。

git rebase:會取消分支中的每個提交,並把他們臨時存放,然后把當前分支更新到最新的origin分支,最后再吧所有提交應用到分支上。

具體區別可參考git merge 和 git rebase 小結

接着上一篇例子:

git merge

  具體操作:bob在index1.html中修改2次,並提交到遠程倉庫;lilei在index.html中修改2次,並提交到遠程倉庫;bob拉取遠程倉庫(git fetch origin dev),merge合並。分支結構如下:

   

  由此可見,兩個分支進行了合並,並且93a6d33提交有2個parent(135b375和8b61b04)。

git rebase

  具體操作:lilei在index.html中修改2次,並提交到遠程倉庫;bob在index1.html中修改2次,並提交,拉取遠程倉庫(git fetch origin dev),rebase合並。命令行輸出如下:

  

  首先將HEAD指針移到當前origin分支頂部,然后再應用所有提交到當前分支。分支結構(呈直線型)如下:

  

  可以看出,rebase時,當前分支在135b375共有祖先的基礎上,將191b8cd、00e08ec及后續2次提交,共計4個提交撤銷。然后將HEAD移到322ca9提交上,再將4個提交重新應用到分支上。

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM