我有两台机器,其中git bash auto complete非常慢。当我点击标签时,文件名可能需要8到10秒才能完成。仅当自动完成是git
命令的一部分时,才会发生这种情况。 cd
的自动完成工作正常。 git命令的实际执行运行正常。
我正在使用git version 1.8.3-preview20130601
$ git count-objects -vH
count: 9
size: 10.23 KiB
in-pack: 2488
packs: 1
size-pack: 18.68 MiB
prune-packable: 0
garbage: 0
size-garbage: 0 bytes
可能导致这种情况的原因是什么?有没有可能的解决办法?
编辑:我更新到Git (version 1.8.4-preview20130916)
,问题仍然存在。我注意到在ConEmu中运行bash shell时,在长时间停顿期间显示在底部的命令是uniq.exe
。似乎对可执行文件的调用正在扼杀时间。
编辑:更新到git version 1.9.0.msysgit.0
缓解了大部分问题。延迟现在只有1到2秒。其他命令如cd
几乎是即时的(<0.5s)。我也看不到uniq.exe
正在运行,只是sh.exe
。
答案 0 :(得分:5)
请参阅commit 227307a,commit 745d655,commit fef56eb,commit 400a755,commit 824388d,commit e8cb023,commit e896369,{{3} },commit b2b6811,commit 3ad8ea7,commit aed3881,commit aa0644f,commit 2ea328a(2017年3月23日)和commit 15b4a16(2017年2月3日){ {3}}。
(commit c977eef于2017年3月30日SZEDER Gábor (szeder
)合并)
例如:
completion
:加快分支和标记完成修改
__git_heads()
和__git_tags()
以及他们拥有的几个来电, 所以我们可以让git for-each-ref
&#39;做所有艰苦的工作和这些 功能&#39;输出不需要任何进一步的处理或过滤 在被移交给Bash之前,导致更快的分支和标记 完成。这些是前面使用的一些相同的技巧 承诺加快裁判完成,即:
将两个函数扩展为接受前缀,当前字和后缀 位置参数,所有可选,默认为全空 保持无参数行为不变。
为&#39;
git for-each-ref
&#39;指定适当的通配模式。至 仅列出与给定当前单词匹配的分支或标签 参数。修改&#39;
git for-each-ref --format=<...>
&#39;包括给定的 前缀和后缀。调整所有callites以指定正确的前缀,当前单词 和后缀参数,并使用填充
COMPREPLY
__gitcomp_direct()
。
注意:使用Git 2.18(2018年第二季度)可以提高文件名完成的性能:请参阅&#34; Junio C Hamano -- gitster
--&#34;
答案 1 :(得分:4)
这是ConEmu的稳定版本的已知问题。
免责声明#2
如果您在执行批次或命令时发现滞后(来自 cmd / git / bash / etc。)只需升级到最新的alpha版本或取消选中 选项“Inject ConEmuHk”。请阅读Issue 526了解详情。
答案 2 :(得分:4)
我仍然遇到使用版本1.9.5的git命令缓慢自动完成问题。根级别的自动完成可能需要8秒,但在较低级别的文件较少时会更快。
我最终使用此处的信息解决了问题:https://github.com/msysgit/msysgit/wiki/Diagnosing-why-Git-is-so-slow
通过为我的存储库设置git config core.fscache true
,自动完成功能可以为许多命令运行得更快,例如add
和diff
,但不是全部,例如rm
。我希望有所帮助。