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