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

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

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

Git版本为1.7.5.4

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


当前回答

我在Windows上的TortoiseGit和Cygwin有这个问题。我不能删除。/.git/index。我尝试了Cygwin和命令提示符,它说该文件正在被另一个进程使用。

我发现我有两个TortoiseProc.exe实例正在运行。我杀死了其中一个,并关闭了我所有的windows资源管理器窗口,然后能够删除文件。我不知道杀死一个TortoiseProc.exe实例是解决方案还是关闭windows资源管理器窗口。

其他回答

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

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

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

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

project_path / . / index.lock

通过删除你正在尝试的回购,我解决了这个问题 提交更改并从远程复制最新版本(如果 使用远程git服务器)。 如果是本地,则从目录中复制数据 并初始化一个新的git存储库。

我所做的

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

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