我正在尝试在我的Git存储库中提交一些文件,而且我收到了这个错误。
这一切都是在我运行git rm -rf folder
和git rm -rf file
并尝试提交更改时开始的。我已经能够提交和推送没有从我的远程存储库中删除这些文件,但是我现在完全陷入困境。
完整错误是:
error: a NUL byte in commit log message not allowed.
fatal: failed to write commit object
我该怎么做才能解决这个问题?我的Google-fu让我失望了。
修改
我刚检查了这些已删除的文件,并尝试再次提交,但它仍然给我同样的错误。我的Git回购已经损坏了吗?
答案 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)
当我从文档中复制一些文本并将该文本粘贴到提交消息时,我收到此错误;所以这是由于我的提交消息中的任何无效字符;因此,当我手动输入时,我的代码很容易被提交。
故事的道德:因此,如果您收到此错误,请检查您的提交消息;如果评论消息中有任何回复,请将其删除