6

我正在尝试在我的 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 存储库是否已损坏或其他原因?

4

5 回答 5

4

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

于 2013-10-31T12:21:44.113 回答
4

我也发生了同样的事情,没有明显的原因。尝试了几件事,例如干净的克隆,从 iTerm2 切换到终端......没有任何区别。然后我最终只使用了 plain git commit,之后我在以下屏幕中手动输入了我的提交消息......并且 DID 解决了它。虽然仍然不确定是什么原因造成的,但至少它已经解决了,有点。

于 2013-11-12T18:13:20.480 回答
1

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

故事的寓意因此,如果您遇到此错误,请检查您的提交信息;如果评论消息中有任何返回,请删除它

于 2014-11-06T05:36:31.293 回答
1

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

Invoke-Expression "svn log -r $rev $repoPath" | Out-File -Encoding ASCII commit.txt
git commit -F commit.txt
于 2015-02-17T22:57:31.640 回答
1

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

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

一些代码编辑器,如 plnkr 更智能,因此将日志消息粘贴到 plnkr 编辑器上。然后,您将看到空字节作为错误字符。修复它,然后使用固定日志进行提交

于 2015-05-20T12:16:36.260 回答