$ git pull --rebase
和$ git pull
區別
是git fetch + git merge FETCH_HEAD
的縮寫,所以默認情況下,git pull
就是先fetch,然后執行merge操作,如果加-rebase參數,就是使用git rebase代替git merge 。更新本地倉庫
merge 和 rebase
merge 是合并的意思,rebase是復位基底的意思。
現在我們有這樣的兩個分支,test和master,提交如下:
D---E test
/
A---B---C---F master
在master執行git merge test
然后會得到如下結果:
D--------E
/ \
A---B---C---F---G test , master
在master執行git rebase test
,然后得到如下結果:
A---C---D---E---C `---F` test , master
可以看到merge操作會生成一個新的節點,之前提交分開顯示。而rebase操作不會生成新的節點,是將兩個分支融合成一個線性的操作。
通過上面可以看到,想要更好的提交樹,使用rebase操作會更好一點,這樣可以線性的看到每一次提交,并且沒有增加提交節點。
在操作中。merge操作遇到沖突時候,當前merge不能繼續下去。手動修改沖突內容后,add 修改,commit 就可以了
而rebase操作的話,會中斷rebase,同時會提示去解決沖突。解決沖突后,將修改add后執行git rebase -continue繼續操作,或者git rebase -skip忽略沖突。