当我尝试提交对本地仓库的更改时,我收到以下消息:
致命:无法写入 new_index 文件
11 回答
如该线程所示,这通常是磁盘空间问题:
$ git status
fatal: unable to write new_index file
我发现的一个原因是我的文件系统空间不足。
查找具有以下内容的大型目录有助于清理一些狂奔的日志文件:
$ du -h / | grep ^[0-9.]*G
注意:您也可以看到它
- msysgit 和 Egit(Git for Eclipse)的资源问题:
问题仍然存在,所以我从 Sysinternals Suite 运行文件监视器。
似乎 Eclipse 正在不断访问索引文件并阻止命令行 git
- 对于经典的防病毒问题:
是的,看起来 Windows Defender 又来了。我总是忘记禁用那个该死的东西。我不敢相信它是多么破碎。在家破坏蓝光播放,在工作中破坏 Git...
如果您使用的是 TortoiseGit,这个错误(或者最近:错误:无法写入索引。)很可能是由于启用了TortoiseGit 图标覆盖造成的。要禁用图标覆盖,请转到:
TortoiseGit > 设置 > 图标叠加
并将状态缓存设置为None。这可能会在 TortoiseGit 的未来版本中得到修复,但目前它似乎很常见。
当我合并一个 sshfs 安装的 git repo 时,我遇到了同样的错误。任何地方都不缺空间。
在我的情况下,解决方案是在 sshfs mount 命令中添加一个 -o workaround=rename 选项。
像这样:sshfs -o idmap=user -o uid=[lokal uid] -o gid=[lokal gid] -o workaround=rename [host]: [mountpoint]
我找到了解决方案。只需要释放一些磁盘空间。
我有同样的问题。在我的情况下,上述解决方案不起作用。
此错误背后的原因是文件.git/index
由于某种未知原因而损坏。我只是将文件重命名为其他文件并运行“git add”。来自 git bash 的命令,它起作用了。
希望这可以帮助某人。
我在这里遵循了所有解决方案,但都没有奏效。我不缺磁盘空间,我禁用了 Windows Defender,禁用了图标覆盖等等。我有大量文件要导入,也许这是导致问题的原因(我有boost
图书馆等)。
我只是打开了“Git Bash”并发出了一些git add
和一个git commit
,一切顺利。这与 TortoiseGit 有关,但我不确定是什么。它似乎会因大量文件或大目录深度而窒息。
我使用 Cygwin 和 git-svn 得到了这个错误。对我有用的解决方案是进行垃圾收集(当时看起来很奇怪):
$ 混帐 gc
对我来说,这是一个文件锁定问题。
为了解决它,我:
- 复制索引文件(位于隐藏的“.git”文件夹中)
- 删了原来的
- 将副本重命名为“索引”
希望这可以帮助!
我遇到了这个问题,但我能够使用 msysgit 提交。我更新了 tortoisegit,还注意到我的 msysgit 版本与 tortoise git 不同步。我不确定最新版本是否修复了它,或者是否是由于不同版本的 tortoise 和 msysgit。无论如何,还有一件事要检查。将它们都更新到 TortoiseGit 1.7.10.0 git 版本 1.7.10.msysgit.1 后,这一切都开始工作了
我在 macOS 上遇到了同样的问题,我已经通过删除解决了repo_folder/.git/index.lock
我使用Unlocker on.git\index.lock
来解锁由其他进程保持打开的任何句柄。就我而言,它是 TGitCache.exe。