当我做'git commit'时,我得到以下内容:

无法创建“project_path/.git/index”。lock `:文件已存在。

然而,当我执行ls project_path/.git/index。锁定,表示文件不存在。你觉得我该怎么做?我还注意到project_path/。git由root拥有,不确定这是否与我遇到的问题有关。

Git版本为1.7.5.4

编辑:看起来问题很可能是我正在运行的另一个进程,那就是向项目目录写入(我不知道)。我重新启动了我的电脑,然后我就没有问题了。


当前回答

这可能是一个旧的回答,但我希望这对下一个需要这个解决方案的人更有用。

在linux/unix/gitbash/cygwin上尝试

Rm -f .git/index.lock

在Windows命令提示符中尝试:

.git \ index.lock的

其他回答

除非你真的打算让根用户拥有你的repo,否则这听起来像是你意外地以根用户身份运行了Git命令(甚至可能是初始的clone/init)。如果您打算这样做,那么您将不得不以根用户身份在repo中运行所有Git命令。如果没有,运行sudo chown your-user[:your-group] -R .git来获得它的所有权,然后看看事情是否正常。

我在windows 10中也有这个问题。

当我尝试del ./.git/index。锁,它告诉我不能删除索引。lock':设备或资源繁忙

我终于明白了原因:

计算机有两个进程使用git:

吉特巴什 CMDER

所以我使用cder .exe来git提交它会发生错误。

所以解决方案是使用git bash或终止git bash,然后使用cder .exe

我最近也遇到了同样的问题。如果你检查整个错误消息,它还说有一些进程正在使用git进程,阻止你删除index.lock。你可以打开IDE,比如Visual Studio或者集成了git的相关软件。关闭它,并尝试重新存储您的文件。希望能有所帮助。

我所做的

删除项目。Git \索引文件手动 在终端git重置 synup项目

我有这个完全相同的错误,但问题不是锁文件。相反,问题是我将另一个git repo的内容复制到这个repo中,包括.git不可见文件夹。因此,SourceTree对我想要stage文件的repo感到困惑(在SourceTree认为我在的repo和我嵌入的.git目录中的内容说我应该在的repo之间存在不匹配)。