一、场景:
我最近在进行代码合并的时候,使用的是 :
git merge --no-ff 分支名称
二、分析
git merge
默认使用的时“**快进**”(fast-forward)模式合并,所以 git merge <=> git merge -ff
fast-forward
Git 合并两个分支时,如果顺着一个分支走下去可以到达另一个分支的话,那么 Git 在合并两者时,只会简单地把指针右移,叫做“快进”(fast-forward)
git merge
--no-ff
指的是强行关闭fast-forward方式。
三、具体使用效果
sit分支
从sit分支创建一个新的分支dev
dev提交记录之后,把dev分支合并到 sit分支;
查看两个合并的区别
使用git merge 代码合并
最终分支图:
git merge默认使用的时“快进”(fast-forward)模式,
所以 dev 合并到 sit 分支时,Git 在合并两者时,只会简单地把指针右移,如下图:![](https://img-blog.csdnimg.cn/60d05eac6f784830b8885f70468d4cb3.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP5pif5ZCR5LiK,size_20,color_FFFFFF,t_70,g_se,x_16)
git merge
--no-ff 代码合并
最终分支图:
由于
--no-ff
禁止使用快进模式,所以会生成一个新的提交;
所以 dev 合并 到 sit 分支时, 可以看下图 **创建了一个新的提交节点**, sit 指向**新的提交节点**
区别:
其实上面两种提交的结果 图 对比,其实很明显, --no-ff 关闭快进模式 进行合并的时候, 会创建一个新的提交, 且指向新的提交, 这样就会造成两个合并操作 回退版本的区别,请看下面的图片:
四、结果:
请查看两次 合并的区别,非常明显:
关闭快进模式
合并操作: 生成了新的提交Merge branch 'dev' into sit
回退上个版本: 上次合并提交的都回退了
默认的 开启快进模式
合并操作: 并没有创建新的提交
回退上个版本: 发现并没有回到退sit之前的提交,而是回退到了dev的上次提交
版权归原作者 小星向上 所有, 如有侵权,请联系我们删除。