Git bash完成未按预期完成Git命令

Git bash完成未按预期完成Git命令,bash,git,completion,Bash,Git,Completion,为git(版本2.14.5)设置bash完成支持后 在Slackware Linux 14.2)上,使用git主存储库中的文件contrib/completion/git completion.bash,正如前面所描述的,并且已经为其他命令做过的那样,我希望得到git命令,因为usususual选项卡completion上的补全字像git[TAB][TAB一样命中。例如: $ git c[TAB][TAB] checkout commit clone ... 不获取任何git命令,如check

git
(版本2.14.5)设置bash完成支持后 在Slackware Linux 14.2)上,使用git主存储库中的文件
contrib/completion/git completion.bash
,正如前面所描述的,并且已经为其他命令做过的那样,我希望得到git命令,因为usususual选项卡completion上的补全字像
git[TAB][TAB
一样命中。例如:

$ git c[TAB][TAB]
checkout commit clone ...
不获取任何git命令,如
checkout
commit
或其他命令,只建议或完成文件名。然而,当使用破折号(如
git--b[TAB][TAB]
)请求完成时,则建议使用git选项(如
--bare

我知道,有很多类似的问题,但尽管我在寻找答案,却找不到解决这个问题的正确方法

  • git completion.bash
    文件来源正确;使用
    采购后。git completion.bash
    它的函数在执行bash环境中可用,如
    declare-f
    所示
  • progcomp
    shell选项是
    on
  • git completion函数注册为
    complete-p git
    显示的输出:
    $ complete -p git
    complete -o bashdefault -o default -o nospace -F __git_wrap__git_main git
    
  • 在检查了源代码的
    git completion.bash
    文件之后,我可以说,
    git[TAB]
    点击时调用了completion函数
    \u git\u wrap\u git\u main
    ,但是在请求完成时,
    COMPREPLY
    变量没有填充完成词,而没有双破折号
    -*

有人知道为什么只有git选项完成,而git命令没有完成吗?

自从git 2.14以来,在完成方面有了很多改进(值得注意的是),我会首先检查git 2.26是否仍然存在同样的问题(可能)


具有丰富的最新版本。

您使用的gt版本是什么?关于哪个操作系统?更新的问题详细信息:Slackware Linux 14.2上的GIT版本2.14.5基本上我不喜欢重新安装部分工作环境。因此,改变整个git套件以获得一个简单的bash完成工作的回报似乎相当昂贵,特别是考虑到这样一个事实,即大量使用现有git功能的运行环境运行良好。完成脚本是一个利用bash完成功能的bash脚本。我认为对于一个完成脚本来说,提供静态完成词并不是什么大不了的事;只有最基本的git命令,
git help
显示了这些命令。远远没有成功。一个很好的例子是很容易出错。然而,我听从了您的建议,并根据当前的源代码编译了git,从而实现了正确的完成功能。虽然还不清楚为什么完成脚本不能与2.14版一起使用,但还有一句话要说:谢谢你。@Nero欢迎你。作为一个解决方案,这似乎有点极端,但我不能排除最新的完成脚本和最新的Git之间的交互,这将使所述脚本正常工作(与最新的Git版本一起使用时)