Git通过git add
成功地暂存了文件(它们显示在“要提交的更改”下),但是当我运行git commit -m "commit message"
和朋友时,该命令将自动失败(显示echo $?
1
),我的文件仍然坐在那里,列为“要提交的更改” ...
其他类似的问题也提出了以下建议:
.git
文件可能已损坏,解决方案是重新克隆到单独的目录中,将更改的文件复制到该目录中,然后重新尝试添加/提交周期。这没有帮助。chmod 755
。这对我来说无关紧要,因为文件已经0755
。答案 0 :(得分:0)
在调试问题时,我最终找到了指出GIT_TRACE
环境变量的人。我跑了:
export GIT_TRACE=1
然后执行此操作,然后重新运行失败的提交命令。现在,我看到濒临死亡之前,它实际上是在其提交过程中尝试在后台运行git diff
。在SO的广泛搜索过程中,我发现有时git diff
可能由于内存不足而无法处理大型文件,但是自从我尝试git commit
以来,这似乎与我无关。该文件实际上是大型文本文件(几个MB)。
最终的解决方案是创建一个.gitattributes
文件,其文件如下所示(类似于.gitignore
,但末尾带有二进制关键字):
problem/file/path/or/pattern binary
这样,git会将文件视为二进制文件,并且不运行diff(因此不会耗尽内存,并且不会提交)。这对我来说是一个可以接受的解决方案,因为我真的不需要更改跟踪或此特定文件上的任何内容。