.git-completion.bash producing error on macOS Sierra 10.12.6 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 &lt;path&gt;] [-c &lt;name&gt;=&lt;value&gt;]
  [--exec-path[=&lt;path&gt;]] [--html-path] [--man-path] [--info-path]
  [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
  [--git-dir=&lt;path&gt;] [--work-tree=&lt;path&gt;] [--namespace=&lt;name&gt;]
  &lt;command&gt; [&lt;args&gt;]
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 newer git-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 of master. Later, when you install git v2.18, then you can switch back to master, or v2.18 tag.