从 git 2.0.1(2014 年 6 月 25 日)开始,当您变基并尝试放置一个空提交消息时,git 将不再抱怨。
请参阅Jeff King的提交 076cbd6 ( )peff
commit
:不要抱怨来自的空消息-C
当我们选择另一个提交的消息时,die()
如果我们发现它是空的并且我们不会运行编辑器(即,当运行“ -C
”而不是“ -c
”时),我们会立即。
但是,这种检查是多余的和有害的。
这是多余的,因为我们稍后会注意到空消息,在我们运行编辑器并死在那里之后(就像我们在普通情况下所做的那样,而不是 " -C
" 情况,用户在编辑器中提供了空消息)。
它有害有几个原因:
- 它不尊重
--allow-empty-message
。结果,“ git rebase -i
”不能“挑选”这样的提交。
因此,您甚至无法通过“ reword
”或“ edit
”指令及时返回修复它。
- 不考虑编辑器以外的其他方式修改消息。
例如, " git commit -C empty-commit -m foo
" 可以从 empty-commit 中获取作者信息,但添加一条消息。
要使其正常工作还有更多工作要做(现在我们明确禁止“ -C
with -m
”),但这消除了一个障碍。
- 现有的检查不足以防止段错误。
我们尝试\n\n
在提交中找到“”标题/正文边界。如果它在字符串的末尾(即,没有正文),或者我们根本找不到它(即,截断的提交对象),我们认为该消息为空。
有“ -C
”,没关系;我们die
在任何一种情况下。但是使用“ -c
”,我们继续,并且在截断提交的情况下最终可能会取消引用NULL+2
。
注意:对于 Git 2.19,git rebase
将--allow-empty-message
默认使用。
请参阅“使用空提交消息重新设置 git 历史记录”。
确保使用 Git 2.25(2020 年第一季度):定序器机器比较了 HEAD 和它尝试提交的状态,以确定结果是否为无操作提交,即使在修改提交时也是如此,这是不正确的,并且已更正。
请参阅Phillip Wood ( ) 的提交 2d05ef2(2019 年 11 月 22 日)。(由Junio C Hamano 合并 -- --在提交 c920859中,2019 年 12 月 5 日)phillipwood
gitster
签字人:菲利普·伍德
这修复了356ee4659b中引入的回归(“ sequencer
:尝试在不分叉 'git commit' 的情况下提交”,2017-11-24,Git v2.17.0-rc0 --批次 #2中列出的合并)。在检查提交是否为空时,
修改提交时使用了错误的父级。修改时我们需要检查not 。
try_to_commit()
HEAD^
HEAD
该系列将改变这些测试以检查建议是否包括建议rebase --skip
跳过将清空提交的修复。