我可以禁用特定的 git 命令吗?

Can I disable a particular git command?

新版本 git 添加了我可能永远不会使用的新命令。
有没有一种方法可以禁用这些命令,以便我的 Tab 键完成速度更快?
例如:之前,git check<tab> 会自动完成 git checkout
但是现在 git check<tab> 不完整,因为在较新的 git 版本中有 git check-mailmap

这只是例子之一。

或者,如果我可以 "force" git 制表符补全 "check" 到 checkout 就更好了。

编辑:我使用原版 bash,没有额外修改

要了解如何从自动完成中删除项目,请参阅 FelipeC 的回答。

另一种方法是使用 git 别名来为您常用的命令创建更短的替代项。例如:

git config --global alias.co checkout

现在您可以键入 git co 来签出文件。

官方的方法是使用配置completion.commands,去掉不需要的:

git config --global completion.commands -check-mailmap

不过,您还可以做得更多。 __git_main() 中有一个用于测试的 hack,你可以滥用它来做你想做的事:

GIT_TESTING_PORCELAIN_COMMAND_LIST="$(git --list-cmds=list-mainporcelain,alias)"

这将强制 Git 的完成仅显示主要命令(和别名)。

您需要 Git v2.18 或更新版本才能正常工作。