git : merge --no-ff(非快进式合并)

文章目录
  • 一、非快进式合并分支:merge --no-ff xxx
  • 二、idea中使用merge --no-ff
  • 总结

    一、非快进式合并分支:merge --no-ff xxx

    $ git checkout develop
    $ git merge --no-ff test
    

    –no-ff 在这的作用是禁止快进式合并。

    Git 合并两个分支时,如果顺着一个分支走下去可以到达另一个分支的话,那么 Git 在合并两者时,只会简单地把指针右移,叫做“快进”(fast-forward),比如下图:

  •           A---B---C test
             /
    D---E---F master
    

    要把 test 合并到 master 中,执行以下命令

  • $ git checkout master
    $ git merge test
    

    结果就会变成

  •           A---B---C test
             /         master
    D---E---F 
    

    因为 test 就在 master 的下游,所以直接移动了 master 的指针,master 和 test 都指向了 C。而如果执行了 git merge --no-ff test 的话,是下面的结果:

  •           A---B---C test
             /         \
    D---E---F-----------G master

    由于 --no-ff 禁止了快进,所以会生成一个新的提交,master 指向 G。

    从合并后的代码来看,结果其实是一样的,区别就在于 --no-ff 会让 Git 生成一个新的提交对象。为什么要这样?通常我们把 master 作为主分支,上面存放的都是比较稳定的代码,提交频率也很低,而 test 是用来开发特性的,上面会存在许多零碎的提交,快进式合并会把 test 的提交历史混入到 master 中,搅乱 master 的提交历史。所以如果你根本不在意提交历史,也不爱管 master 干不干净,那么 --no-ff 其实没什么用。不过,如果某一次 master 出现了问题,你需要回退到上个版本的时候,比如上例,你就会发现退一个版本到了 B,而不是想要的 F,因为 test 的历史合并进了 master 里。
    二、idea中使用merge --no-ff

  • 总结

    –no-ff的作用:
    1.明确分支主线提交历史;
    2. 方便快速回滚。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值