我有一个相对干净的Mavericks 10.9安装,运行的是git版本1.8.5.1;我的文件位于一个挂载的SMB共享上,而且我不能再正确地使用我的GIT存储库,因为空字节(\0's)一直出现在我所有的版本控制文件中.甚至是在GIT动态生成的文件中。
用手输入git commit -m "Test message"
,给我:
error: a NULL byte in commit log message not allowed.
fatal: failed to write commit object
如果我尝试使用git commit
,pico
视图中出现的默认提交消息如下所示:
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch feature/centos_support
# Your branch is up-to-date with 'origin/feature/centos_support'.
#
# Changes to be committed:
# modified: README.md
#
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
有一段时间,在结束时手动删除那些空字节是有效的,而且我能够提交,但是即使是这样的时间间隔也不再起作用(错误与上面相同),我被迫丢弃我的整个repo,重新克隆它,并重做我想要提交的任何东西。
新的存储库正常工作了一段时间,但是最终空字符又重新出现了,我也遇到了同样的问题。
相同的空字节(如上面所示)出现在我修改的文件的开头和结尾,导致GIT将它们视为二进制文件,直到我手动使用vi
删除空行为止。
我很感谢你能提供的任何帮助。
发布于 2014-01-02 00:12:01
看起来这是OSX10.9小牛和(一些?)的问题。SMB股票。目前还没有修复或解决方法。
有些人建议用cifs://来连接共享,而不是smb://,但是这似乎不能解决这个问题。
这一问题可转载如下:
<on an SMB share>
$ echo "blah blah blah blah" > test.txt
$ more test.txt
<file is fine>
$ echo "blah" > test.txt
$ more test.txt
<file has ^@ characters at the end>
因此,使用终端,如果用较小的文件覆盖文件,则在结尾处得到这些NUL字符。还可能有其他方法使文件被附加或加上这些NUL字符。
很多人都在抱怨这一点,例如:bug.cgi?id=237766
以下是该页的结论:
我可以在Komodo Edit和Aptana Studio中复制空字符,因此这似乎不是Netbeans特有的问题,而且可能与NAS/SMB问题有关。 我强制使用了smb1连接,但这并没有什么区别。即使我弹出共享,并重新连接cifs://并创建、修改和保存一个文件,它仍然被破坏。 看来苹果将不得不解决这个问题,除非有人能想出可行的解决办法。
希望苹果很快就能解决这个问题。在此之前,您可以使用Double指挥官或其他实现自己的SMB堆栈的程序。
发布于 2014-03-23 23:33:58
自从升级到小牛队之后,我也遇到了同样的问题。这种情况发生在存储在SMB驱动器上的git存储库中,每次提交的消息都比以前的提交短:
$ git commit -a -m "long comment"
[master 2516835] long comment
1 file changed, 1 insertion(+), 1 deletion(-)
$ git commit -a -m "short"
error: a NUL byte in commit log message not allowed.
fatal: failed to write commit object
我注意到提交消息存储在文件COMMIT_EDITMSG中,即空字节(正如其他海报所描述的)。只需在提交之前删除文件就可以了:
$ rm .git/COMMIT_EDITMSG
$ git commit -a -m "short"
[master e8bd92e] short
1 file changed, 1 insertion(+), 1 deletion(-)
希望这个解决方案也对你们有用。快把我逼疯了。
发布于 2013-12-20 10:04:52
Git假设提交消息采用UTF-8编码,我想这在您的系统中是不一样的,这就是为什么它看到\0字节的原因。尝试以下几点:
git config --add i18n.commitencoding ISO-8859-1
git commit -m "Test message"
https://stackoverflow.com/questions/20696643
复制相似问题