Search code examples
bashgittab-completionbash-completion

Can I disable a particular git command?


With new versions of git new commands have been added which I will probably never use.
Is there a way I can disable these commands so that I my tab completion is faster?
For ex: before, git check<tab> would autocomplete to git checkout
But now git check<tab> doesn't tab complete due to there being git check-mailmap in the newer git version.

This is just one of the example.

Alternatively it would be great if I could "force" git to tab-complete "check" to checkout .

Edit: I use vanilla bash with no extra modifications


Solution

  • The official way is to use the configuration completion.commands and remove the ones you don't want:

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

    However, you can do even more. There is a hack in __git_main() used for testing that you can abuse to do what you want:

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

    This will force Git's completion to show only the main commands (and aliases).

    You need Git v2.18 or newer for these to work.