Hi, Anthony On Sat, May 23, 2020 at 7:25 PM Anthony Sottile <asottile@xxxxxxxxx> wrote: > > easiest to reproduce is with docker > > ```dockerfile > FROM ubuntu:focal > RUN : \ > && apt-get update \ > && DEBIAN_FRONTEND=noninteractive apt-get install -y > --no-install-recommends \ > bash-completion \ > git \ > && apt-get clean \ > && rm -rf /var/lib/apt/lists/* > ``` > > ```console > $ docker run --rm -ti test bash > root@23e691ecc7ba:/# [ -f /etc/bash_completion ] && . /etc/bash_completion > root@23e691ecc7ba:/# git gitk > ``` > > (I typed git git<tab>) > > ```console > $ git gitk > git: 'gitk' is not a git command. See 'git --help'. > ``` > this is a bit annoying because I have some aliases/commands for git-github-* > > the git version I have is 2.25.1: Thanks for the report. This is also reproducible in Git 2.27.0-rc1. To complete subcommands, git-completion.bash uses[1] the output of: git --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config And the list returned by the line above contains "gitk", because this command is in the "mainporcelain" category (in command-list.txt). One possible solution to the invalid completion you mentioned, without having to re-categorize "gitk", is to explicitly exclude it in git-completion.bash: diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index b1d6e5ebed..f07394584f 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -3214,7 +3214,10 @@ __git_main () then __gitcomp "$GIT_TESTING_PORCELAIN_COMMAND_LIST" else - __gitcomp "$(__git --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config)" + local cmds="$(__git --list-cmds=list-mainporcelain,others,nohelpers,list-complete,config | \ + sed -e '/^gitk$/d')" + local aliases="$(__git --list-cmds=alias,config)" + __gitcomp "$cmds $aliases" fi ;; esac (I had to split the list into "cmds" and "aliases" so that we could still give completion for a valid "git gitk" alias, if present.) This should solve the problem, althought it's admittedly not very elegant... Nevertheless, I'd be happy to send a complete patch if folks are happy with the workaround. In the meantime, you could use: git config completion.commands -gitk To locally remove the completion for "gitk". Thanks, Matheus [1]: See contrib/completion/git-completion.bash +3218 (https://github.com/git/git/blob/master/contrib/completion/git-completion.bash#L3218)