目录
场景:
分析
git merge
fast-forward
git merge --no-ff
具体使用效果
使用git merge 代码合并
? ? ? ?最终分支图:
git merge --no-ff代码合并
? ?????????最终分支图:
?区别:
结果:
关闭快进模式
合并操作: 生成了新的提交Merge branch 'dev' into sit
?回退上个版本: 上次合并提交的都回退了
默认的 开启快进模式
合并操作: 并没有创建新的提交
?回退上个版本:? 发现并没有回到退sit之前的提交,而是回退到了dev的上次提交
场景:
我最近在进行代码合并的时候,使用的是 :
? ? ? ? ? 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的上次提交

|