參考http://www.jianshu.com/p/129e721adc6egit
我在公司裏看到其餘同事都使用git pull --rebase拉取遠程代碼,而我老是用git pull,也有同事和我說過用rebase拉取代碼會安全一些。可是我一直沒搞清楚二者的區別,因而上網查了一些資料,就個人理解寫了這篇文章。安全
是git fetch + git merge FETCH_HEAD 的縮寫。因此,默認狀況下,git pull就是先fetch,而後執行merge 操做,若是加--rebase 參數,就是使用git rebase 代替git merge。fetch
merge 是合併的意思,rebase是復位基底的意思。spa
如今咱們有這樣的兩個分支,test和master,提交以下:code
D---E test
/
A---B---C---F master
|
在master執行git merge test
,而後會獲得以下結果:ip
D--------E
/ \
A---B---C---F----G test, master
|
在master執行git rebase test
,而後獲得以下結果:string
A---B---D---E---C
'---F' test, master
|
經過上面能夠看到,想要更好的提交樹,使用rebase操做會更好一點。這樣能夠線性的看到每一次提交,而且沒有增長提交節點。it
在咱們操做過程當中。merge 操做遇到衝突的時候,當前merge不能繼續進行下去。手動修改衝突內容後,add 修改,commit 就能夠了。table
而rebase 操做的話,會中斷rebase,同時會提示去解決衝突。解決衝突後,將修改add後執行git rebase –continue繼續操做,或者git rebase –skip忽略衝突。ast