0


Git 合并时 --no-ff 的作用

一、场景:

我最近在进行代码合并的时候,使用的是 :

          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的上次提交

标签: git merge --no-ff

本文转载自: https://blog.csdn.net/sunshinezx8023/article/details/124410028
版权归原作者 小星向上 所有, 如有侵权,请联系我们删除。

“Git 合并时 --no-ff 的作用”的评论:

还没有评论