一、场景:
我最近在进行代码合并的时候,使用的是 :
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 关闭快进模式 进行合并的时候, 会创建一个新的提交, 且指向新的提交, 这样就会造成两个合并操作 回退版本的区别,请看下面的图片:
四、结果:
请查看两次 合并的区别,非常明显: