Git成功暂存文件,但未能提交文件



Git通过git add成功地暂存了文件(它们显示在"要提交的更改"下(,但当我运行git commit -m "commit message"和朋友时,命令会无声地失败(echo $?显示1(,我的文件仍然放在那里,列为";要提交的更改";。。。

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

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

在调试我的问题时,我最终找到了指出GIT_TRACE环境变量的人。我跑了:

export GIT_TRACE=1

完成此操作后,我重新运行了失败的commit命令。现在我看到,在即将结束之前,它实际上试图在引擎盖下运行git diff,作为其提交过程的一部分。我在对SO进行广泛搜索时发现,有时git diff会因内存不足而在大文件上失败,但这似乎与我无关,因为我正在尝试git commit。有问题的文件实际上是大型文本文件(几MB(。

最终的解决方案是创建一个.gitattributes文件,其中包含如下条目(有点像.gitignore,但末尾带有二进制关键字(:

problem/file/path/or/pattern binary

通过这种方式,git将文件视为二进制文件,并且不运行diff(因此不会耗尽内存,也不会提交失败(。这对我来说是一个可以接受的解决方案,因为我真的不需要对这个特定文件进行更改跟踪或任何事情。

相关内容

  • 没有找到相关文章

最新更新