Git成功地暂存文件但无法提交文件

时间:2020-07-28 15:36:08

标签: linux git git-commit git-diff

Git通过git add成功地暂存了文件(它们显示在“要提交的更改”下),但是当我运行git commit -m "commit message"和朋友时,该命令将自动失败(显示echo $? 1),我的文件仍然坐在那里,列为“要提交的更改” ...

其他类似的问题也提出了以下建议:

  • .git文件可能已损坏,解决方案是重新克隆到单独的目录中,将更改的文件复制到该目录中,然后重新尝试添加/提交周期。这没有帮助。
  • 文件存在某种权限问题,请重试之前chmod 755。这对我来说无关紧要,因为文件已经0755
  • 重新启动计算机。我确实尝试过这个(知道的原因),但是没有帮助。

1 个答案:

答案 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(因此不会耗尽内存,并且不会提交)。这对我来说是一个可以接受的解决方案,因为我真的不需要更改跟踪或此特定文件上的任何内容。