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

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

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

Git版本为1.7.5.4

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


当前回答

我的解决方案是删除.index文件,并允许Git重新构建另一个。

其他回答

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

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

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

如果你正在使用GIT BASH For Windows:-

运行以下两个命令 1. cd . 2. rm index.lock

我创建了一个空索引。锁定文件,使用Windows命令删除

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

消息将如下所示

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

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