我有一个已在git下管理的现有项目。我最近不得不重新进行计算机(OS X Snow Leopard)的重建,并返回项目,git可以跟踪项目的变化,但我无法保存任何东西给git。我尝试时在标题中收到错误:
Dans-iMac-335:[app-name-obscured] apple$ git add app/models/*
fatal: Unable to write new index file
从这种情况中恢复的最佳方法是什么?有一个heroku存储库版本,但它与这个版本非常不同步。大概我可以使用一个新的克隆作为基础,并更新每个文件,但这似乎过于费力且容易出错。
git在这里寻找的是什么,它无法找到,是否有可以恢复它的变化?
顺便说一句,从我所知道的文件权限是正确的 - 受控制的文件和.git组件都由我拥有rw访问...答案 0 :(得分:62)
我刚遇到同样的情况,原来我的文件系统已经满了。
答案 1 :(得分:4)
您是否具有.git的写入权限(=您可以在那里创建新文件并编辑现有文件)吗?如果没有,则调整文件权限。
如果你有写权限,似乎你发现了一个错误。您可以尝试通过
恢复当最后一步工作时,您需要设置从当前仓库到克隆的远程分支,然后您可以使用克隆的仓库作为新的工作副本。
答案 2 :(得分:3)
我正在使用Parallels在我的Mac上运行Ubuntu。我可以git init,但不是git add。我认为问题是git add需要与底层git数据库进行原子同步。由于我使用的文件系统实际上是在我的Mac上,Parallels通过网络共享从我的Mac导出。我相信这意味着git无法做到它想要的。在本地移动文件修复了问题(在我的情况下这很容易,因为我在我的Mac上使用DropBox,所以我只是在运行Parallels的Ubuntu上安装了DropBox)
答案 3 :(得分:2)
我遇到过与SFTP网络驱动器(免费)类似的问题。解决方案是:在SFTP网络驱动器的配置文件设置中找到填写复选框“移动前删除现有目标”。
答案 4 :(得分:2)
我能够通过进入git initiator app中的.git文件夹并删除index.lock / index文件来解决这个问题。我不得不重新索引整个应用程序,但它解决了这个问题。
答案 5 :(得分:1)
如果您使用sshfs
,请添加选项-o workaround=rename
,如下所述:http://alan.lamielle.net/2009/07/08/git-over-sshfs
答案 6 :(得分:1)
我想指出此错误的另一个原因
如果你正在克隆一个包含另一个git存储库的git存储库(而不是子模块),你将会遇到这种情况。
希望它会对某人有所帮助。
答案 7 :(得分:1)
我有同样的问题。我仍然不知道原因,但我的解决方法是删除index.lock sudo rm -f index.lock
,然后我给了索引sudo chmod 777 index
的写权限。在此之后,我能够分阶段进行。问题是我几乎所有时间都要做这件事。
答案 8 :(得分:1)
这是旧的,但我的原因是Dropbox。我的本地存储库存储在我的Dropbox文件夹中,在完成命令之前我不得不暂停Dropbox同步。
答案 9 :(得分:0)
我有类似的问题。 " git reset --hard"为我工作。
答案 10 :(得分:0)
要添加:令人惊讶的是,一些git插件会阻止索引文件。我的Eclipse Kepler有默认插件,偶尔会从git repo更新一些自己的信息,在该操作期间阻止索引文件。
答案 11 :(得分:0)
我在visual studio上使用git时遇到过这个问题,我的解决方案是以管理员身份运行visual studio
答案 12 :(得分:0)
我遇到了同样的错误,因为Google Drive的Windows备份和同步客户端没有释放对此存储库中两个文件的锁定。在同步客户端完成其工作之后,解决方法是:Process Explorer - >查找 - >查找句柄或DLL - >关闭手柄。
答案 13 :(得分:0)
我有同样的问题。 “致命:无法写入新的索引文件”
我发现原因是我的磁盘已满。我从中删除了其他内容,然后我的git repo恢复了,一切又恢复了。