使用“fixup!”之间有什么真正的区别吗?或“壁球!”?

9 git git-rebase git-commit

我一直在阅读有关commitrebasefixup!的git 文档,但我仍然不明白squash!在执行rebase --autosquash. 我相信我理解修复以前的提交的fixup!作用,但我没有看到一个很好的例子来代替。任何人都可以澄清两者之间的区别,并给出一些它们以不同方式使用的背景吗?提前致谢!squash!

Von*_*onC 8

正如我在“修剪 Git 提交/压缩 Git 历史记录”中所说明的那样,并总结一下:

\n\n
\n

与修复!指令,您可以在提交消息中保持压缩“不可见”,同时仍然受益于使用该--autosquash选项的自动提交重新排序

\n
\n\n

正如Op Dash评论的那样:

\n\n
\n

使用squash!将保证挤压操作被记录在历史中,这fixup!与更“干净”的方法中不可见的挤压操作不同。

\n
\n\n
\n\n

在 Git 2.16.x/2.17(2018 年第 1 季度)之前,另一个区别是您无法将“ git commit --fixup”与附加提交消息结合起来。
\n现在情况不再是这样了。

\n\n

请参阅\xc3\x86var Arnfj\xc3\xb6r\xc3\xb0 Bjarmason ( )的提交 30884c9(2017 年 12 月 22 日)。\n帮助者:Eric Sunshine ( )。\n (由\xc3\x86var Arnfj\xc3\xb6r\xc3\xb0 Bjarmason 合并 -- --提交30884c9,2017 年 12 月 22 日)avar
sunshineco
avar

\n\n
\n

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

\n\n

添加对提供-m选项的支持--fixup。\n 自从引入以来
,这样做就出错了(“选项-m无法\n组合”) 。\n 在此之前,提交时修改修复消息的唯一方法是在编辑器中使用和修改它。--fixup
--edit

\n\n

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

\n\n
    \n
  • 在创建提交时给自己留下一个简短的注释,--fixup当\n 不言而喻的情况下,为什么应该在没有注释的情况下将提交压缩到另一个提交中。

  • \n
  • (Ab) 使用该--fixup功能来“修复”已经被推送到不允许非快进的分支的提交,
    \n 即只是注意到“ this should have been part of that other commit”,\n 并且如果历史记录已得到将来重写,两者应该结合起来。

  • \n
\n\n

在这种情况下,您可能想留下一条小消息,
例如“ forgot this part, which broke XYZ”。

\n
\n\n
\n\n

注意,在 Git 2.17 (Q2 2018) 之前,“ git commit --fixup”不允许-m<message>同时使用“ ”选项;允许它用更多文本注释结果提交。

\n\n

请参阅提交 30884c9提交 f55e84f(2017 年 12 月 22 日),作者:\xc3\x86var Arnfj\xc3\xb6r\xc3\xb0 Bjarmason ( avar)
\n帮助者:Eric Sunshine ( sunshineco)
\n (由Junio C Hamano 合并 -- gitster--提交 c1ab3b8中,2018 年 2 月 27 日)

\n\n
\n

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

\n\n

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

\n
\n\n

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

\n\n
\n
    \n
  • 在创建提交时给自己留下一个简短的注释,--fixup当\n 不言而喻的情况下,为什么应该在没有注释的情况下将提交压缩到另一个提交中。

  • \n
  • (Ab) 使用该--fixup功能来“修复”已经被推送到不允许非快进的分支的提交,即只是注意到“这应该是其他提交的一部分” ,\n 如果将来历史被重写,则应\n 将两者合并。

    \n\n

    在这种情况下,您可能想留下一条小消息,例如“忘记了这部分,这破坏了 XYZ”。

  • \n
\n\n

这样,--fixup <commit> -m"More" -m"Details"将产生如下提交消息:

\n\n
!fixup <subject of <commit>>\n\nMore\n\nDetails\n
Run Code Online (Sandbox Code Playgroud)\n\n

--fixup最初添加选项时, “选项-m无法\n组合”错误已从 扩展-c-C并且-F还包括\n --fixup( commit d71b8ba , "commit: --fixup option for use with rebase --autosquash", 2010-11-02, Git 1.7 .4-rc0))。

\n
\n