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

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

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

Git版本为1.7.5.4

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


当前回答

我也遇到过同样的情况。我甚至没有对本地代码做任何更改。我刚刚编辑了一个文件并恢复了它。我只是在隐藏的。git文件夹中删除了下面的文件。它工作!

project_path / . / index.lock

其他回答

我没有inex。锁文件删除,但对我有用的是从文件夹属性对话框的属性窗口中删除只读检查。

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文件夹中删除了下面的文件。它工作!

project_path / . / index.lock

在运行Visual Studio 2015 RC (v4.6.00057)并结合SourceTree (v1.6.14.0)的Windows平台上,也会给出此错误。

解决方案: 假设你想使用源代码树作为源代码管理器,只需在Visual Studio中禁用源代码控制提供程序,如下所示:

转到:工具>选项>源代码控制 选择“当前源控制插件”为:无

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