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

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

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

Git版本为1.7.5.4

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


当前回答

Windows:

从以管理员身份打开的powershell控制台尝试

> rm -Force ./.git/index.lock

如果这不起作用,您必须杀死所有git.exe进程

> taskkill /F /IM git.exe PID为20448的进程“git.exe”已被终止。 PID为11312的进程“git.exe”已被终止。 PID为23868的进程“git.exe”已被终止。 PID为27496的进程“git.exe”已被终止。 PID为33480的进程“git.exe”已被终止。 PID为28036的进程“git.exe”已被终止。 > rm -Force ./.git/index.lock

其他回答

我所做的

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

从git 2.8.4(2016年6月)开始,这种情况不应该再发生了。

参见问题755,这也应该缓解这个问题(commit 2db0641):

确保临时文件句柄没有被子进程继承 防止子进程继承index.lock的句柄。

对我来说,罪魁祸首是windows安全,它阻止了git.exe运行,你可以检查屏幕右下角的通知选项卡。

消息将如下所示

Virus and threat protection 
unauthorized changes blocked
controlled folder access blocked git.exe from running

你的代码是否在Dropbox正在同步的目录中?试着暂停Dropbox。

我一直得到同样的情况,但一旦我暂停Dropbox(界面给你选择暂停30分钟,1小时,…),它再也没有发生过。

当双击SourceTree切换分支时,我遇到了这个问题。这个问题并不常见,Atlassian也知道这个问题,但他们决定不修复它。

幸运的是,有一个解决方案。不要双击你想要切换的分支,只需右键单击并选择“Checkout[分支名称]”。现在应该成功了。