使用" fixup之间是否有任何真正的区别!"或者"壁球!"?

时间:2016-08-31 14:51:34

标签: git git-rebase git-commit

我一直在commitrebase上阅读git文档,但我仍然不了解使用fixup!squash!作为执行rebase --autosquash时提交消息的前缀。我相信我理解fixup!fixing previous commits方面的作用,但我没有看到使用squash!的好例子。任何人都可以澄清两者之间的区别,并给出一些不同的使用方式吗?提前谢谢!

1 个答案:

答案 0 :(得分:4)

正如我在" Trimming Git Commits/Squashing Git History"中所说明的那样,总结一下:

  

修复!指令,你可以保持那种压扁"隐形"在提交消息中,仍然可以使用--autosquash选项

自动提交重新排序

正如Op Dash评论:

  

使用squash!将保证压缩操作记录在历史记录中,这与fixup!不同,其中压扁操作对于更多"清洁剂"是不可见的。方法

另一个区别,之前 Git 2.16.x / 2.17(2018年第一季度),是你无法合并" git commit --fixup"附加提交消息 现在不再是这种情况了。

commit 30884c9Ævar Arnfjörð Bjarmason (avar)(2017年12月22日) 帮助:Eric Sunshine (sunshineco)
Ævar Arnfjörð Bjarmason -- avar --合并于commit 30884c9,2017年12月22日)

  

commit:添加对--fixup <commit> -m"<extra message>"

的支持      

添加对-m选项提供--fixup的支持   这样做有误(&#34;选项-m不能   自--fixup被引入以来,已经合并了#   在此之前,在提交时修改fixup消息的唯一方法是使用--edit并在编辑器中修改它。

     

此功能的用例是以下之一:

     
      
  • 在创建--fixup提交时给自己留下快速通知   不明白为什么在没有a的情况下应该压制这个提案并不是不言而喻的   请注意另一个。

  •   
  • (Ab)使用--fixup功能来&#34;修复&#34;已提交的提交   被推到一个不允许非快进的分支,
      即只注意&#34; this should have been part of that other commit&#34;,   如果历史在未来被重写,那么两者应该   合并。

  •   
     

在这种情况下,您可能希望留下一条小信息,
    例如&#34; forgot this part, which broke XYZ&#34;

请注意,在Git 2.17(2018年第二季度)和#34; git commit --fixup&#34;之前不允许&#34; -m<message>&#34;选项同时使用;允许它用更多文本注释结果提交。

commit 30884c9commit f55e84fÆvar Arnfjörð Bjarmason (avar)(2017年12月22日)。{ 帮助:Eric Sunshine (sunshineco)
Junio C Hamano -- gitster --于2018年2月27日commit c1ab3b8合并)

  

commit:添加对--fixup <commit> -m"<extra message>"

的支持      

添加对-m选项提供--fixup的支持。这样做了   自--fixup被引入以来一直存在错误。在此之前,唯一的   提交时修改fixup消息的方法是使用--edit和   在编辑器中修改它。

此功能的用例是以下之一:

  
      
  • 在创建--fixup提交时给自己留下快速通知   不明白为什么在没有a的情况下应该压制这个提案并不是不言而喻的   请注意另一个。

  •   
  • (Ab)使用--fixup功能来&#34;修复&#34;已提交的提交   被推到一个不允许非快进的分支,   即只注意&#34;这应该是其他提交的一部分&#34;,   如果历史在未来被重写,那么两者应该   合并。

         

    在这种情况下,你可能想留一条小信息,   例如&#34;忘了这部分,打破了XYZ&#34;。

  •   
     

这样,--fixup <commit> -m"More" -m"Details"将导致a   提交消息,如:

!fixup <subject of <commit>>

More

Details
     

最初添加--fixup选项时,&#34;选项-m不能   合并&#34;错误已从-c-C-F扩展到也包括在内   --fixupcommit d71b8ba,&#34; commit: - fixup选项,用于rebase --autosquash&#34;,2010-11-02,Git 1.7.4-rc0))。