git rebase和git merge的区别。
标签:
gitrebasemergefetchit |
分类: 版本控制(GIT,SVN,ClearCase |
前言:
平时工作中发现一般同事在同步远程代码的时候都是用git pull,其实git
pull包含有两个操作,一个是fetch远程的代码,一个是将本地当前的代码和远程代码进行merge,即git fetch + git
merge.
merge
操作遇到冲突的时候,当前merge不能继续进行下去。手动修改冲突内容后,add 修改,commit
就可以继续往下操作, 而rebase
操作的话,会中断rebase,同时会提示去解决冲突。解决冲突后,将修改add后执行git rebase
—continue继续操作,或者git rebase —skip忽略冲突。
其实git pull还有一个参数可以加,即git pull
-rebase,其最终效果和git pull一样,也会fetch到远程代码。
即git pull默认使用的是merge模式,那么git
pull -rebase指定使用rebase模式。
那么git merge和git
rebase的区别是什么呢?
1、结果上没有区别
简单来说,git merge和git
rebase从最终效果来看没有任何区别,都是将不同分支的代码融合在一起。
2、生成的代码树不同
虽然从最终效果上来说相同,但是git merge和git
rebase生成的代码树稍微有些不同。
http://s3/mw690/00656Fy5gy6Stg3efDkc2&690rebase和git merge的区别。" TITLE="git rebase和git merge的区别。" />
http://s1/mw690/00656Fy5gy6Stg4gEAE80&690rebase和git merge的区别。" TITLE="git rebase和git merge的区别。" />
git merge(合并)代码树
git
rebase(复位基底)代码树
3. git merge会生成一个新的合并点,而git
rebase不会。
比如:当前存在两个分支,master和test分支
D---E
test
/
A---B---C---F
master如果使用merge合并,将为分支合并自动识别出最佳的同源合并点:并新增合并点G
D--------E
/
\
A---B---C---F----G
test, master 如果使用rebase合并,则合并结果为:
A---B---D---E---C'---F' test,
master
即git rebase可以线性的看到每次提交,而git
merge可以更加精确的看到每次提交。
所以想要更好的提交树,使用rebase操作会更好一点。这样可以线性的看到每一次提交,并且没有增加提交节点。4. 遇到冲突时的处理
后一篇:Git中的HEAD和head

加载中…