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

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

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

Git版本为1.7.5.4

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


当前回答

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

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

其他回答

在我的案例中,没有索引。锁定要删除的文件。我试图在用pretty格式化后提交109个文件。提交更少的文件最终“解决”了这个问题。

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

如果使用备用的命令行git客户端,比如hub,也会发生这种情况。

几年来,我一直在使用hub作为git的别名替代品,但最近写了一个bash脚本,在其中执行了大量git工作,并开始出现索引锁问题。

直到我想起来我运行的是hub而不是git,我才找到解决方案。我把它去掉了,问题就解决了!

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

窗口已休眠,拒绝挂载

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

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

shutdown /s

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

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

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

信贷:nobar

有时,当安装了多个Git客户端时,另一个Git客户端可能会干扰。

Ie。通过任务管理器或Get-Process确保TortoiseGit中的TGitCache在后台不活跃。