我可以禁用特定的 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 或更新版本才能正常工作。
新版本 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 或更新版本才能正常工作。