Windows 7 x64上的git bash自动完成缓慢

Twi*_*ech 12 git bash zsh git-bash

我有两台机器,其中git bash auto complete非常慢.当我点击标签时,文件名可能需要8到10秒才能完成.只有当auto complete是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
Run Code Online (Sandbox Code Playgroud)

可能是什么导致了这个?有没有可能的解决办法?

编辑:我更新到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.

Dav*_*man 5

我仍然遇到仅 git 命令自动完成缓慢的问题,使用版本 1.9.5。在根级别自动完成可能需要 8 秒,但在文件较少的较低级别上速度更快。

我终于用这里找到的信息解决了问题:https://github.com/msysgit/msysgit/wiki/Diagnosing-why-Git-is-so-slow

通过git config core.fscache true对我的存储库进行设置,许多命令的自动完成运行速度更快,例如adddiff,但不是全部,例如rm。我希望这有帮助。


Von*_*onC 5

Git 2.13(2017年第二季度)应该改进Git bash完成,因为大量refs的refs完成已经加快,部分是通过放弃消除模糊的引用,部分是通过消除'git for-each-ref之间的大部分shell处理'和'ls-remote'和Bash的完成设施.

请参阅commit 227307a,commit 745d655,commit fef56eb,commit 400a755,commit 824388d,commit e8cb023,commit e896369,commit b2b6811,commit 3ad8ea7,commit aed3881,commit aa0644f,commit 2ea328a,commit 15b4a16(2017年3月23日),并提交c977eef(03 2017年2月)由SZEDERGábor(szeder).
(通过合并JUNIOÇ滨野- gitster-提交bf65060,2017年3月30日)

例如:

completion:加快分支和标签完成

修改__git_heads()__git_tags()他们拥有的少数几个callite,所以我们可以让' git for-each-ref'做所有的努力工作,这些函数'输出在被移交给Bash之前不需要任何进一步的处理或过滤,从而加快分支和标签的完成.这些是先前提交中用于加速refs完成的一些相同技巧,即:

  • 扩展两个函数以接受前缀,当前字和后缀位置参数,所有可选和默认全部为空以保持无参数行为不变.

  • 指定适当的globbing模式以' git for-each-ref'仅列出与给定当前word参数匹配的分支或标记.

  • 修改' git for-each-ref --format=<...>'以包含给定的前缀和后缀.

  • 调整所有callites以指定正确的前缀,当前单词和后缀参数,并填写COMPREPLY使用 __gitcomp_direct().


注意:使用Git 2.18(2018年第二季度)可以提高文件名完成的性能:请参阅" Git bash-completion with filename support? "