git pull origin master與git pull --rebase origin master的區別


參考

建議:最好看一遍廖雪峰的git教程,看完時間差不多就兩個小時,git相關的知識寫的很清楚,看完整個人都豁然開朗,很多git的問題都想通了。

 

 

區別:

git pull=git fetch + git merge
git pull --rebase=git fetch+git rebase

git fetch : 從遠程分支拉取代碼,可以得到遠程分支上最新的代碼。

所以git pull origin master與git pull --rebase origin master的區別主要是在遠程與本地代碼的合並上面了。

 

現在有兩個分支:test和master,假設遠端的master的代碼已經更改了(在B基礎上變動:C,E),test的代碼更改了要提交代碼(在B基礎上變動:D,E),如下圖:

      D---E test
      /
 A---B---C---F--- master

 

問題就來了,如果C,F和D,E的更改發生沖突,那么就需要我們合並沖突了,下面我們來看看git merge和git rebase怎么合並的

git merge:

       D--------E
      /          \
 A---B---C---F----G---   test, master

git rebase

A---B---D---E---C‘---F‘---   test, master

對比可看出:git merge多出了一個新的節點G,會將遠端master的代碼和test本地的代碼在這個G節點合並,之前的提交會分開去顯示。

git --rebase會將兩個分支融合成一個線性的提交,不會形成新的節點。

 

 

rebase好處

rebase好處
想要更好的提交樹,使用rebase操作會更好一點。
這樣可以線性的看到每一次提交,並且沒有增加提交節點。
merge 操作遇到沖突的時候,當前merge不能繼續進行下去。手動修改沖突內容后,add 修改,commit 就可以了。
而rebase 操作的話,會中斷rebase,同時會提示去解決沖突。
解決沖突后,將修改add后執行git rebase –continue繼續操作,或者git rebase –skip忽略沖突。

 


免責聲明!

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



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