错误:不允许提交日志消息中的NULL字节

时间:2013-10-31 11:37:54

标签: git

我正在尝试在我的Git存储库中提交一些文件,而且我收到了这个错误。

这一切都是在我运行git rm -rf foldergit rm -rf file并尝试提交更改时开始的。我已经能够提交和推送没有从我的远程存储库中删除这些文件,但是我现在完全陷入困境。

完整错误是:

error: a NUL byte in commit log message not allowed.
fatal: failed to write commit object

我该怎么做才能解决这个问题?我的Google-fu让我失望了。

修改

我刚检查了这些已删除的文件,并尝试再次提交,但它仍然给我同样的错误。我的Git回购已经损坏了吗?

5 个答案:

答案 0 :(得分:4)

似乎由于某种原因,一个NULL字节正在进入你的提交消息,而Git不喜欢这样。尝试从命令行提交并查看是否有效:git commit -m "My brilliant commit message"

答案 1 :(得分:4)

我有同样的事情发生,没有明显的理由。试过几件事,比如一个干净的克隆,从iTerm2切换到终端......没有任何区别。然后我结束了普通的git commit,之后我在下面的屏幕中手动输入了我的提交消息......并且DID解决了它。仍然不确定是什么导致了这一点,但至少它已经解决了,排序。

答案 2 :(得分:1)

我根据Edward Thomson关于日志消息编码问题的评论解决了这个问题。我有一个PowerShell脚本调用Out-File将信息转储到一个文件(恰好是从svn日志中搜集数据),这将形成git提交日志。将Out-File的Encoding标志设置为ASCII解决了这个问题。

Invoke-Expression "svn log -r $rev $repoPath" | Out-File -Encoding ASCII commit.txt
git commit -F commit.txt

答案 3 :(得分:1)

当您在编辑器中复制并粘贴日志并发生换行转换时会发生这种情况(\ n => \ r \ n,它会为每行返回创建空字节)

大多数文本编辑器在渲染文本时都会处理忽略字节,因此您将看不到它。

有些代码编辑器,比如plnkr更聪明,所以将日志消息粘贴到plnkr编辑器上。然后,您将看到空字节作为错误字符。修复它然后使用固定日志进行提交

答案 4 :(得分:0)

当我从文档中复制一些文本并将该文本粘贴到提交消息时,我收到此错误;所以这是由于我的提交消息中的任何无效字符;因此,当我手动输入时,我的代码很容易被提交。

故事的道德因此,如果您收到此错误,请检查您的提交消息;如果评论消息中有任何回复,请将其删除