I've followed the process for git-completion
as per the description provided at https://medium.com/@farooqyousuf/autocomplete-git-commands-and-branch-names-in-terminal-on-mac-os-x-4e0beac0388a:
The first step is to execute this command in your terminal window, this is basically grabbing the ‘git-completion.bash’ script and putting it in your home directory.
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash
Now add this line to your ‘~/.bash_profile’. This will allow the execution of the git autocomplete script if it present
if [ -f ~/.git-completion.bash ]; then
. ~/.git-completion.bash
fi
You can now restart all your terminal windows or just refresh the terminal window you wish to use this script in. To refresh do:
source ~/.bash_profile
Following is the error I'm getting while hitting tab
key after typing git
:
unknown option: --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config
usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
<command> [<args>]
Best Answer
I ran into the exact same problem. After some digging, I finally figured out what the root problem is.
They made some major changes to the
git-completion.bash
script which requires a new feature in git v2.18,--list-cmds
. The problem is that none of the package managers have updated to git v2.18 yet.Most of the instructions out there say to download raw.githubusercontent.com/git/git/
master
/contrib/completion/git-completion.bash . But that is not necessarily the best option because sometimes you will be downloading a newergit-completion.bash
than your version of git supports.So the solution is to download the
git-completion.bash
version that matches your git version. Then source it again. In this case:https://raw.githubusercontent.com/git/git/v2.17.1/contrib/completion/git-completion.bash
Notice that it is referencing
v2.17.1
instead ofmaster
. Later, when you install git v2.18, then you can switch back tomaster
, orv2.18
tag.