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

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

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

Git版本为1.7.5.4

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


当前回答

可能(我遇到过这种情况),ls命令说它不存在,因为当前用户没有访问该目录或文件的权限。

移除锁并确保使用正确的用户执行git,以避免权限问题。

如果你在GNU/Linux系统下使用sudo命令:

执行rm project_path/.git/index.lock

其他回答

在我的例子中,它是窗户,而不是完全关闭。

窗口已休眠,拒绝挂载

Windows很有可能真的处于休眠状态。当你告诉Windows正常关机时,它会自动关机。这样做的好处是可以获得更快的启动时间。

在没有hybernating的情况下关闭Windows,在命令提示符下发出以下命令(在Windows中):

shutdown /s

您可能还需要包含/t 0来立即关闭。

我找到了一个很好的教程来设置启动器:如何在Windows 8中完全关机而不禁用混合启动。

真正关闭Windows的更简单的方法是“重新启动”(而不是“关闭”),但随后拦截引导过程并引导Linux,而不是让它引导Windows。

信贷:nobar

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

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

我终于明白了原因:

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

吉特巴什 CMDER

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

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

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

在我的例子中,只需转到project_path/。Git并删除索引。锁文件。试着推动你的代码,它会工作的。

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