如何填写空提交消息?

时间:2012-05-08 15:35:59

标签: git

直到一分钟前,我有一个Git repo,其中最后一次提交有一个空提交消息。我通过用git rebase -i压缩一个新的提交来填充它(我原本计划修改内容)但我仍然想知道是否有一种正确的方法来填写空提交消息。

我试过

git commit --amend

但是那不起作用,然后我试了

git rebase -i HEAD^

reword。两次尝试都导致Git说

fatal: commit has empty message

然后退出。

编辑:澄清一下,最终有效的是

# change some stuff
git commit
git rebase -i HEAD~2
# squash the last two commits

但这似乎是一个黑客。

3 个答案:

答案 0 :(得分:8)

这似乎是一个尚未修复的bug(虽然有针对它提出的补丁)。作为解决方法,您可以在命令行上提供消息:

git commit --amend -m "foo"

答案 1 :(得分:3)

如果您需要编辑上次提交(HEAD)消息,请使用git commit --amend -m 'new message'

$ git commit --allow-empty --allow-empty-message -m ''
[master 5db8236] 

$ git commit --amend
fatal: commit has empty message

$ git commit --allow-empty --amend -m 'new message'
[master d383d5c] new message

请记住,我正在使用--allow-empty强制git commit创建一个空提交,--allow-empty-message强制git commit创建一个空消息提交。< / p>

答案 2 :(得分:3)

启动git 2。0。1(2014年6月25日),当您进行rebase并尝试放置一个空提交消息时,git不会再抱怨空提交消息。

commit 076cbd6

Jeff King (peff)

commit:不要抱怨来自-C

的空消息
  

当我们选择另一个提交的消息时,如果我们发现它是空的并且我们不打算运行编辑器(即运行“die()”而不是“{{1}时,我们立即-C }}“)。
  但是,这项检查是多余且有害的。

     

这是多余的,因为在我们运行编辑器之后,我们已经注意到空信息,然后死在那里(正如我们对常规而非“-c”情况一样,   用户在编辑器中提供了一条空消息。

     

这有害于几个原因:

     
      
  1. 不尊重-C因此,“--allow-empty-message”无法“选择”此类提交   因此,您甚至无法及时通过“git rebase -i”或“reword”指示进行修复。
  2.   
  3. 除了编辑器之外,它没有考虑修改消息的其他方式   例如,“edit”可以从空提交中获取作者信息,但是向其添加消息   还有更多工作要做,以便正常工作(现在我们明确禁止“git commit -C empty-commit -m foo-C”),但这会删除一个包版广告。
  4.   
  5. 现有的检查不足以防止段错误   我们尝试在提交中找到“-m”标题/正文边界。如果它在字符串的末尾(即没有正文),,如果我们根本找不到它(即截断的提交对象),我们认为该消息为空。
      使用“\n\n”,这没关系;在任何一种情况下我们-C。但是对于“die”,我们继续,并且在截断提交的情况下可能最终取消引用-c
  6.   

注意:使用Git 2.19,NULL+2默认使用git rebase 请参阅“Rebasing a git history with empty commit messages”。