美文网首页
git merge 的奥秘

git merge 的奥秘

作者: _花 | 来源:发表于2022-07-18 14:26 被阅读0次

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

    1.git merge(默认快进模式)

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

              A---B---C feature
             /
    D---E---F master
    
              A---B---C feature
             /         master
    D---E---F 
    

    快进式合并会把 feature 的提交历史混入到 master 中,如果某一次 master 出现了问题,你需要回退到上个版本的时候,比如上例,你就会发现退一个版本到了 B,而不是想要的 F

    git merg --no-ff(强制关闭快进模式)
              A---B---C feature
             /         \
    D---E---F-----------G master
    

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

    git merge --squash

    git merge --squash 是用来把一些不必要commit进行压缩,比如说,你的feature在开发的时候写的commit很乱,那么我们合并的时候不希望把这些历史commit带过来,于是使用--squash进行合并,此时文件已经同合并后一样了,但不移动HEAD,不提交。需要进行一次额外的commit来“总结”一下,然后完成最终的合并。

    image.png

    相关文章

      网友评论

          本文标题:git merge 的奥秘

          本文链接:https://www.haomeiwen.com/subject/ycctirtx.html