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 在合并两者时,只会简单地把指针右移,如下图:

  • git merge --no-ff 代码合并

           最终分支图:

                由于 --no-ff 禁止使用快进模式,所以会生成一个新的提交;

                所以  dev 合并 到 sit 分支时, 可以看下图 创建了一个新的提交节点, sit 指向新的提交节点

 区别:

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

四、结果:

请查看两次 合并的区别,非常明显: 

关闭快进模式

合并操作: 生成了新的提交Merge branch 'dev' into sit

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

默认的 开启快进模式

合并操作: 并没有创建新的提交

 回退上个版本:  发现并没有回到退sit之前的提交,而是回退到了dev的上次提交

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值