28

Git 的选项卡自动补全对小型项目很有用,但我目前正在处理两个使用 git 的大型项目,对于这些项目来说,这比无用还糟糕。每当我输入,比如说,git add forms<tab>git 需要 20 秒或更长时间才能找到文件(在本例中为 forms.py),并且在此时间跨度内,我无法在终端中执行任何其他操作。有什么方法可以关闭自动完成功能,或者以某种方式使其更快?

4

6 回答 6

54

它不是 git auto 完成文件名,而是你的 shell。在执行例如“cat forms<tab>”时,您是否有同样的延迟?

看看这篇有类似问题的帖子:

http://talkings.org/post/5236392664/zsh-and-slow-git-completion

这篇文章建议将以下内容添加到您的 .zshrc 中:

__git_files () { 
    _wanted files expl 'local files' _files     
}

编辑:这是该帖子的原文

我发现很多帖子都抱怨 git 自动完成在大型存储库中的速度有多慢。有各种建议的补丁和建议来加载最新的 zsh。也许其中一件事会起作用,但我真正想要的只是完成分支和文件的名称,就像它们在文件系统中一样。我没有找到任何关于如何获得这种行为的建议,所以我自己想出来了。我想我会分享给任何可能从中受益的人。我刚刚将以下内容添加到我的 .zshrc 文件中:

__git_files () { 
    _wanted files expl 'local files' _files  }

现在我可以运行 git 命令并接近即时完成,同时仍然获得类似于 ls 提供的文件完成。

于 2012-03-21T18:17:56.203 回答
11

最后厌倦了 zshell 中非常慢的自动完成并开始寻找解决方案。我最终从'git'切换到使用'gitfast'插件,该插件已经安装了我的zsh并且正在飞行...... https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins#快速

于 2013-10-24T17:24:43.483 回答
7

我没有使用 zshell 的经验,但我在另一个论坛上得到了这个答案。您需要在 .zshrc 文件中包含这一行:

compdef -d git
于 2012-03-21T18:25:26.657 回答
1

这是因为 Zsh 默认带有非常臃肿的 Git 完成功能。我写了一篇博客文章解释了我是如何解决这个臃肿的,但它必须在 Zsh 项目之外。

简单的答案是安装 Git 的 zsh 补全,它不同于 Zsh 的 git 补全(默认情况下)。下载git-completion.zsh,并将其放在您的~/.zsh/_git. 然后把它放在你的 fpath 上:

fpath=(~/.zsh $fpath)

你现在应该飞了。

正如这里的另一条评论所解释的那样;另一种选择是使用oh-my-sh并启用gitfast插件,它可以达到同样的效果。

为什么 Zsh 开发人员会坚持让他们的代码变慢?我不知道,但在这里你可以看到他们的推理示例:Re: Slowness issue with git completion

于 2019-06-06T19:32:00.593 回答
0

一种非常快速且肮脏的解决方案是删除以下负责自动完成的文件。

/usr/local/git/contrib/completion/git-completion.bash
于 2012-03-21T18:17:43.490 回答
-2

根据git bash auto complete slow on windows 7 x64的答案,git 2.13 带有更快的git-completion.bash

于 2017-10-03T17:55:59.487 回答