我已经看到很多关于此问题的其他帖子,他们没有帮助。
我有一个非常简单的回购 - 两个JavaScript文件。我在Macbook上有100多GB。当我尝试将文件移动到子目录中并在本地暂存我得到的更改时......
致命:无法编写新的索引文件
无论是在终端中执行所有操作还是使用像SourceTree这样的GUI,都会发生这种情况。此外,其中一个文件被锁定,我无法删除工作目录,直到我注销并重新登录。
为什么会这样?锁是否阻止某些东西上演?如果是这样,我在OS X上解锁问题文件的原因是什么?远程仓库是谷歌代码,如果这有所作为,虽然我还没有推到遥控器。一切都是本地的。
答案 0 :(得分:144)
在我的情况下,磁盘空间不足,所以我不得不从硬盘驱动器中删除文件以腾出空间。
答案 1 :(得分:54)
过去几天我一直遇到同样的问题。基本上,在我不知情的情况下,整个仓库已经被移动到一个新的文件系统,当我试图运行git status时,它突然报告了repo中的每个文件都被更新了。
所以,经过大量的谷歌搜索,我尝试了以下内容:
设法解决问题的唯一方法是复制索引文件,删除原始文件并重命名副本。
我知道它不是真正的“解决方案”,但现在它神奇地工作>&lt ;,所有文件/分支都完好无损。如果有人知道为什么这可能有用,请告诉。
答案 2 :(得分:14)
我在Mac上遇到了同样的问题。它似乎是由文件系统ACL引起的。尝试chmod -RN /path/to/repo
清除ACL。在这之后,我能够提交更改。使用技巧复制索引文件,删除原始文件并将副本移回实现相同的结果。
答案 3 :(得分:10)
在我的情况下,暂停Dropbox同步解决了问题
答案 4 :(得分:9)
如果您在某种在线同步服务中设置了github,例如谷歌驱动器或保管箱,请尝试禁用同步,因为同步服务尝试读取/写入文件,因为github尝试执行相同操作,导致github无法正常工作。
答案 5 :(得分:5)
我发现文件.git / index正被另一个进程(我的本地开发Web服务器)使用。我关闭了这个过程,然后就可以了。
答案 6 :(得分:5)
这对我有用:
rm -f ./.git/index.lock
答案 7 :(得分:3)
我有ACL(不知何故)附加到.git文件夹中的所有文件。
使用.git文件夹中的ls -le
进行检查。
您可以使用chmod -N
(对于文件夹/文件)或chmod -RN
(递归)删除ACL
答案 8 :(得分:3)
我认为某些后台备份解决方案(例如Google备份和同步)会阻止对索引文件的访问。我关闭了应用程序,Sourcetree完全没有问题。似乎Dropbox的功能相同(@tonymayoral)。
答案 9 :(得分:2)
在我的情况下,它是一个并发运行的EGit。重启eclipse后,它照常工作。
答案 10 :(得分:2)
如果您使用的是Windows框,请确保您正在使用的程序(无论是源树还是git终端)以管理员身份运行。我收到了同样的错误消息。您可以右键单击该程序以管理员身份运行,也可以将其属性更改为始终以管理员身份运行。
答案 11 :(得分:2)
我有同样的问题。我重新启动计算机,问题已解决。
答案 12 :(得分:2)
答案 13 :(得分:1)
此问题可能是由进程锁定.git\index
引起的。
链接Find out which process is locking a file or folder in Windows指定了以下查找锁定文件的方法:
SysInternals Process Explorer - 转到查找>查找句柄或DLL。在“句柄或DLL子字符串:”文本框中,键入文件的路径(例如“C:\ path \ to \ file.txt”),然后单击“搜索”。应列出对该文件具有开放句柄的所有进程。
使用上述方法查找锁定.git\index
的进程,然后停止锁定可执行文件。这应该可以解决问题。
例如,Process Explorer Search表示我的.git\index
被vmware-vmx.exe
锁定。暂停VMWare Player虚拟机(通过共享文件夹访问git repo)解决了这个问题。
答案 14 :(得分:1)
关闭Visual Studio代码(在我的情况下,在文件保存中运行自动上传器后台作业)解决了我的问题。
解决方案:我的朋友和同事Arnel。
答案 15 :(得分:1)
答案 16 :(得分:1)
没有足够的空间是一个问题。清理并重试
答案 17 :(得分:0)
问题: 当我在git中检出一些修改过的文件时,出现了这个错误。 我有两个用户ABC和XYZ。文件有uid:ABC的gid,但它没有git访问权限,并试图用相同的方式签出文件。
我尝试过的解决方案: XYZ正在使用git访问,尝试使用sudo检出文件并且它有效.. !!
答案 18 :(得分:0)
这对我有用:
<强>上下文强>
在服务器上构建项目
git status
返回HEAD detached at <commit-SHA>
我在本地做了什么操作,我有这个错误。更具体地说:
<强>解决方案强>
<work-dir>/.git/index
。 git status
表示不会跟踪项目中的所有文件(这里不足为奇)。git reset HEAD --hard
HEAD detached at <commit-SHA>
时返回git status
,但您应该git checkout <some-branch>
你又回到了正轨!
<强> !!重要!!
这只是因为我“正在”建造。没有对代码进行任何珍贵的修改。如果你实际上处于“开发时间”,那么我建议先保存你的工作或者去另一种方法。
希望它会有所帮助:)。
答案 19 :(得分:0)
我在Windows上使用GitExtensions时出现此问题。通过在包含存储库的文件夹上授予当前用户(me)的完全权限来修复。
另一次,即使我从Git Extensions收到错误,我也可以从Visual Studio 2015提交相同的文件。
另一次我不得不从.git文件夹中删除“index”文件
答案 20 :(得分:0)
我的情况有点有趣:
我运行git log来检查某个提交,但是我没有正确退出它,我按ctrl + c退出了。
然后索引似乎已被锁定。因此,我再次运行git log,然后按Q退出。
问题已解决。 :)
答案 21 :(得分:0)
如果你在重拍期间得到这个:
这很可能是由某些软件锁定您的仓库的索引文件引起的,例如备份软件,防病毒,IDE或其他git客户端。
在大多数情况下,锁只是暂时的,所以它只是出现了糟糕的时机和运气不好。
但是,git rebase --continue
会抱怨下一个命令是空提交:
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
要解决此问题,请运行git reset
并再次尝试git rebase --continue
。
答案 22 :(得分:0)
在我的情况下,这是一个nodemon
实例,正在监视文件系统的更改。
答案 23 :(得分:0)
我也有/也有这个问题。就我而言,没有一种解释适用:
直到我发现通过另一台(linux)计算机访问Windows文件夹之前,git都可以正常工作而没有任何抱怨。它必须与我在普通的debian buster计算机上使用的git版本有关:git 1.2.20给我“无法编写新索引”错误,而从ubuntu模糊虚拟盒(git 1.2.2)添加了文件没有问题。
答案 24 :(得分:0)
使用 sudo 运行对我有用。
例如: 须藤 git add -r