zoukankan      html  css  js  c++  java
  • git 直接merge fast-forward和--no-ff和--squash的区别——图文解释

    git merge

    merge 默认是fast-forward方式来merge,不会显示 feature,只保留单条分支记录。git直接把HEAD指针指向合并分支的头,完成合并。属于“快进方式”,不过这种情况如果删除分支,则会丢失分支信息。因为在这个过程中没有创建commit。

    git merge --no-ff

    --no-ff指的是强行关闭fast-forward方式。可以保存之前的分支历史。能够更好的查看 merge历史,以及branch 状态

    git merge --squash

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

    使用git merge --squash将开发分支合到master后会新编辑一条git comment来总结这几次提交记录,一下为所有分支的git log:

    master分支的git log:

    总结:
    --no-ff:不使用fast-forward方式合并,保留分支的commit历史
    --squash:使用squash方式合并,把多次分支commit历史压缩为一次

    参考博文:https://segmentfault.com/q/1010000002477106

  • 相关阅读:
    day7随笔
    day6随笔
    day5笔记
    uniapp 全屏蒙版下的其他view禁止滑动
    uniapp scroll-view 组件右侧的滚动条
    uni 组件 头部
    根据两点的经纬度查询两点间的距离
    仅供学习使用的一些 相关vue类
    仅供学习使用的一些样式+行为
    百度地图简单调用
  • 原文地址:https://www.cnblogs.com/qukun/p/14436336.html
Copyright © 2011-2022 走看看