Git Extensions中的定期背景“ git status”会干扰交互工作

Ser*_*ich 5 git git-extensions

我同时使用Git扩展程序和命令行(我使用git-tfs,因此应使用命令行进行推送/提取)。

但是,如果我尝试在命令行未关闭Git Extensions窗口的情况下推送更改,则该操作通常会出错

fatal: Unable to create '.git/index.lock': File exists.

原因很明显-Git扩展会定期执行git status,从而创建锁定文件并阻止推送。

我找到了解决方案-在控制台中工作之前先关闭Git Extensions,但是它不太方便,我经常忘记了。

我还能在这里做什么?可能以某种方式禁用git状态的创建锁?

Von*_*onC 1

Git 2.14 已经建议对 进行后台刷新git statusGit 扩展最终可能会受益于:

请参阅Jeff King的提交 5e83cca(2017 年 11 月 27 日) ( )(由Junio C Hamano 合并 -- --提交 e6bf6af中,2017 年 12 月 13 日)peff
gitster

git-status.txt: 提到--no-optional-locks

如果您在阅读文档时想到“我不希望 Git 对我的后台进程采取任何锁定”,那么您可能很容易--no-optional-locksgit.txt.

但遇到问题的特定实例是相当合理的:您有“ git status”在后台运行,并且您注意到它会导致与其他进程的锁争用。因此,您查看git-status.txt是否有办法禁用它,但没有提到该标志。

让我们添加一个简短的注释,提及状态确实会触及索引(以及原因),并带有指向全局选项的指针。这可以为用户指明正确的方向,并帮助他们对要禁用的内容做出更明智的决定。

所以git status手册页现在显示为:

背景刷新

默认情况下,git status会自动刷新索引,更新工作树中缓存的统计信息并写出结果。
写出更新的索引是一种并非严格必要的优化status为自己计算值,但写出它们只是为了避免后续程序重复我们的计算)。
status在后台运行时,写入期间持有的锁可能会与其他同步进程发生冲突,导致它们失败。在后台
运行的脚本应考虑使用.statusgit --no-optional-locks status

如果最后一句话可以在 Git 扩展中打包的嵌入式 Git 中找到,那就可以解决您的问题。