首页 > 解决方案 > Git 成功暂存文件但未能提交文件

问题描述

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

其他类似的问题提出了一些建议,例如:

标签: linuxgitgit-commitgit-diff

解决方案


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

export GIT_TRACE=1

在这样做之后,我重新运行了失败的提交命令。现在我看到,在死之前,它实际上是在尝试在git diff后台运行,作为其提交过程的一部分。我在通过 SO 进行广泛搜索时看到,git diff由于内存不足,有时可能会在大文件上失败,但这似乎与我无关,因为我试图这样做git commit。有问题的文件实际上是大型文本文件(几 MB)。

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

problem/file/path/or/pattern binary

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


推荐阅读