Git 成功暂存文件但未能提交文件
Git successfully stages file but fails to commit the file
Git 通过 git add
成功暂存文件(它们显示在“要提交的更改”下),但是当我 运行 git commit -m "commit message"
和朋友时,命令无声地失败(echo $?
显示 1
)并且我的文件仍然在那里列为“要提交的更改”...
其他类似的问题建议如下:
.git
文件可能已损坏,解决方案是重新克隆到一个单独的目录,将更改的文件复制到那里,然后重新尝试 add/commit 循环。这没有帮助。
- 文件存在某种权限问题,
chmod 755
重试前。这与我无关,因为文件已经 0755
.
- 正在重新启动计算机。我实际上确实尝试过这个(因为谁知道)但它没有帮助。
在调试我的问题时,我最终确实找到了指出 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(因此不会 运行 内存不足,也不会提交失败)。这对我来说是一个可以接受的解决方案,因为我真的不需要更改跟踪或这个特定文件上的任何东西。
Git 通过 git add
成功暂存文件(它们显示在“要提交的更改”下),但是当我 运行 git commit -m "commit message"
和朋友时,命令无声地失败(echo $?
显示 1
)并且我的文件仍然在那里列为“要提交的更改”...
其他类似的问题建议如下:
.git
文件可能已损坏,解决方案是重新克隆到一个单独的目录,将更改的文件复制到那里,然后重新尝试 add/commit 循环。这没有帮助。- 文件存在某种权限问题,
chmod 755
重试前。这与我无关,因为文件已经0755
. - 正在重新启动计算机。我实际上确实尝试过这个(因为谁知道)但它没有帮助。
在调试我的问题时,我最终确实找到了指出 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(因此不会 运行 内存不足,也不会提交失败)。这对我来说是一个可以接受的解决方案,因为我真的不需要更改跟踪或这个特定文件上的任何东西。