自定义git命令自动完成

pri*_*ist 5 linux git shell

我已经通过编写位于/ usr/local/bin中的shell脚本实现了自定义git命令.它工作正常,但我希望脚本在命令行中自动完成分支,就像"git checkout [TAB] [TAB]".怎么可以这样做?

编辑:只需添加一些上下文:git允许您通过创建脚本轻松添加自己的命令/usr/local/bin.在我的例子中git checkout [TAB][TAB],该脚本便于检查分支,构建,打包和安装源代码.

pri*_*ist 8

弄清楚了.我需要下载git bash completion(这里),/etc/bash_completion.d使用以下内容创建一个新文件:

source ~/.git-completion.bash
_git_install ()
{
  __gitcomp_nl "$(__git_refs)"
}
Run Code Online (Sandbox Code Playgroud)

然后exec bash重新加载完成脚本.

  • 请注意,如果您的自定义 git 命令中有一个破折号(即“log-diff”),那么您创建的 bash 函数必须用下划线替换破折号(即“_git_log_diff()”。) (3认同)
  • 我还将添加它以简单地将确切完成复制为另一个命令,bash 函数的主体可以调用另一个。不是你想要的,但如果你这样做了,bash 函数的主体可能只是`_git_checkout "$@"`。如果您正在制作像“log-diff”这样的自定义命令并希望它以与“log”相同的方式完成,则很有用。 (2认同)