SourceTree-致命的无法创建.git / index.lock文件存在

时间:2018-08-12 07:05:33

标签: git atlassian-sourcetree

使用SourceTree(在Mac上), 尝试执行任何操作时,我经常会收到fatal unable to create .git/index.lock file exists

我很确定原因是我的存储库旧了-

提交:git rev-list --all --count == 4660

文件:git ls-files | wc -l == 8657)

似乎每次打开SourceTree窗口时,它都会运行一些检查状态(可能是git status),这需要30秒钟以上的时间,在此期间,任何操作都会导致fatal unable to create .git/index.lock file exists < / p>

是否可以禁用SourceTree自动状态检查? 即手动运行状态检查-仅在需要时运行。

要对git repo进行某种优化以使其更有效?

2 个答案:

答案 0 :(得分:2)

您是否已使用过程日志进行了验证?

来自SourceTree Blog

  

我们从添加 Process Log 开始,它可以帮助您清楚地了解Sourcetree如何使用Git和Mercurial。它还可以帮助诊断问题,例如长时间运行,孤立或重复的过程。这也适用于那些可能对事物的幕后工作方式感到好奇的人,而无需打开“任务管理器”或终端窗口进行更深入的研究。使用这个新实用程序,我们能够识别并解决许多细微的错误,这些错误意外地消耗了宝贵的计算资源。

process log

但是如果您仍然要禁用它:

仅当其他一些应用程序正在更改存储库中的文件时,才应进行自动刷新,因为SourceTree会响应操作系统中的事件而刷新。这是否经常将文件保存在存储库中,从而触发刷新?

您可以为单个存储库(在工具栏上的设置,“高级”,“禁用自动刷新”复选框)禁用SourceTree中的自动刷新,也可以在“首选项”(或Windows中的“工具”>“选项”)中全局进行相同操作Auto-refresh when files change选项。

禁用自动刷新后,请使用:

CTRL+ALT+R在Windows上刷新远程状态

CMD+R在Mac上刷新远程状态

答案 1 :(得分:-1)

大多数答案都说要运行“ rm index.lock”脚本,但是这次对我来说不起作用。终端不断返回

  

rm:无法删除“ ./.git/index.lock”:设备或资源正忙

这似乎是Sourcetree的问题,我终于找到了解决方案:

在Sourcetree中:打开“工具”>“选项”>“ Git”,然后切换到 Embedded Git 。 如果您尝试推送,它将失败(至少对我而言)。

再次返回并切换回 System Git ,现在当您按下它时,它实际上就可以工作了(至少对我来说是这样)