一、场景:
我最近在进行代码合并的时候,使用的是 :
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 在合并两者时,只会简单地把指针右移,如下图:
-
git merge
--no-ff 代码合并
最终分支图:
由于 --no-ff 禁止使用快进模式,所以会生成一个新的提交;
所以 dev 合并 到 sit 分支时, 可以看下图 创建了一个新的提交节点, sit 指向新的提交节点

区别:
其实上面两种提交的结果 图 对比,其实很明显, --no-ff 关闭快进模式 进行合并的时候, 会创建一个新的提交, 且指向新的提交, 这样就会造成两个合并操作 回退版本的区别,请看下面的图片:
四、结果:
请查看两次 合并的区别,非常明显:
关闭快进模式
合并操作: 生成了新的提交Merge branch 'dev' into sit

回退上个版本: 上次合并提交的都回退了

默认的 开启快进模式
合并操作: 并没有创建新的提交
回退上个版本: 发现并没有回到退sit之前的提交,而是回退到了dev的上次提交

本文详细介绍了在Git中如何使用`git merge`命令进行代码合并,特别是`git merge --no-ff`选项的作用。通过实例展示了快进模式和非快进模式在合并分支时的差异,包括它们对分支历史的影响以及回退操作的不同。非快进模式会在合并时创建一个新的提交,而快进模式则直接移动分支指针,不生成新提交。在回退版本时,--no-ff模式能更清晰地追溯合并历史。

9678

被折叠的 条评论
为什么被折叠?



