一. git pull其实是一个复合操作
git pull = git fetch + git merge FETCH_HEAD
git pull --rebase = git fetch + git rebase FETCH_HEAD
其中FETCH_HEAD
为默认值,即等价于:
git pull = git fetch + git merge
git pull --rebase = git fetch + git rebase
二. git merge 和 git 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---B---D---E---C‘---F‘--- test, master
merge操作会生成一个新的节点,之前的提交分开显示。
而rebase操作不会生成新的节点,是将两个分支融合成一个线性的提交。