GIT提交时出现“fatal: unable to write new_index file”错误提示

27

当我尝试将更改提交到本地代码库时,出现以下消息:
致命错误:无法写入new_index文件

11个回答

34

正如这个线程所说明的那样,通常这是磁盘空间问题:

$ git status
fatal: unable to write new_index file

我发现的原因之一是我的文件系统已经用完了空间。
使用以下类似方法查找大型目录可以帮助清理一些失控的日志文件:

$ du -h / | grep ^[0-9.]*G

注意:您还可以看到以下内容:

问题仍然存在,因此我运行了Sysinternals Suite中的File Monitor。
看起来Eclipse不断访问索引文件并阻止命令行git。

没错,看起来Windows Defender又出事了。我总是忘记禁用这个该死的东西。它有多么烂啊。在家里破坏蓝光播放,在工作中破坏Git...


3
感谢您对 Windows Defender 部分的点赞!这个链接可以帮您开启或关闭 Windows Defender:http://windows.microsoft.com/zh-cn/windows-vista/Turn-Windows-Defender-on-or-off。 - Jim Geurts
你也可以通过取消“只读”选项来更改.git文件夹在Windows上的权限。 - Mina Wissa
这就是为什么像 MSE 这样的 AV 可以让您选择不监视的文件夹。 - Mr. Boy

13
如果您使用TortoiseGit,在出现此错误(或最近的error: Unable to write index.)时,很可能是因为启用了TortoiseGit图标叠加。要禁用图标叠加,请转至: TortoiseGit > 设置 > 图标叠加 并将状态缓存设置为。这个问题可能会在以后的TortoiseGit版本中得到解决,但目前似乎很普遍。

这就是导致问题的原因。非常感谢。 - TheXenocide
这也是我这种情况的原因。感谢您发布这个答案。 - Jon
没错,这就是我的解决方法 - 在某种程度上。我必须实际终止 TGitCache.exe 进程,但那解决了问题。 - Peter Bailey

7

当我正在合并一个通过sshfs挂载的git repo时,我遇到了相同的错误。任何地方都没有空间不足的问题。

在我的情况下,解决方法是在sshfs挂载命令中添加"-o workaround=rename"选项。

像这样: sshfs -o idmap=user -o uid=[本地uid] -o gid=[本地gid] -o workaround=rename [主机名]:[挂载点]


5

我也遇到了同样的问题。但上述解决方案对我都无效。

这个错误的原因是文件.git/index被某些未知原因破坏了。我将文件重命名为其他名称,并在git bash中运行'git add .'命令,问题得以解决。

希望这能帮助到其他人。


这对我很有帮助。但是我没有运行git add .,而是运行了git reset,它重新生成了索引文件,而不会将所有更改都添加到暂存区中。我在通过终端与其交互的同时,也将SourceTree打开到了该仓库的SSHFS挂载上;可能是其中某些操作导致了文件损坏。 - sffc

4

对我来说,这是一个文件锁定的问题。

解决方法如下:

  1. 复制位于隐藏的“.git”文件夹中的索引文件
  2. 删除原始文件
  3. 将副本重命名为“index”

希望这可以帮到您!


4
我已经找到解决方案。只需要释放一些磁盘空间即可。

1
我正在写同样的东西 ;) - VonC

3

我在使用Cygwin和git-svn时遇到了这个错误。对我有用的解决方案是进行垃圾回收(尽管当时似乎很奇怪):

$ git gc


3
我遵循了这里的每一个解决方案,但没有一种解决方法奏效。我没有磁盘空间不足的问题,禁用了Windows Defender,禁用了图标重叠等等。我有大量的文件需要导入,也许这是问题的原因(我有boost库等其他东西)。
我只需打开“Git Bash”并执行几个git addgit commit就可以了。这与TortoiseGit有关,但我不确定具体原因。它似乎在处理大量文件或深层目录时出现了问题。

1

我在macOS上遇到了同样的问题,通过删除repo_folder/.git/index.lock文件解决了它。


1

我曾经遇到过这个问题,但是我通过msysgit提交成功了。我更新了tortoisegit,并注意到我的msysgit版本与tortoise git不同步。我不确定最新版本是否修复了它,或者是由于tortoise和msysgit有不同的版本造成的。无论如何,这是需要检查的另一件事情。在将它们都更新到TortoiseGit 1.7.10.0和git version 1.7.10.msysgit.1之后,所有问题都得到了解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接