git - working - install bash completion

How to configure git bash command line completion? (6)

E.g. on a fresh ubuntu machine, I've just run sudo apt-get git, and there's no completion when typing e.g. git check[tab].

I didn't find anything on, but IIRC completion is included in the git package these days and I just need the right entry in my bashrc.

On Linux

on most distributions, git completion script is installed into /etc/bash_completion.d/ (or /usr/share/bash-completion/completions/git) when you install git, no need to go to github. You just need to use it - add this line to your .bashrc:

source /etc/bash_completion.d/git
# or
source /usr/share/bash-completion/completions/git

In some versions of Ubuntu, git autocomplete may be broken by default, reinstalling by running this command should fix it:

sudo apt-get install git-core bash-completion

On Mac

You can install git completion using Homebrew or MacPorts.


if $BASH_VERSION > 4: brew install [email protected] (updated version) Pay special care which version of bash you have as MacOS default ships with 3.2.57(1)-release.

add to .bash_profile:

  if [ -f /usr/local/share/bash-completion/bash_completion ]; then
    . /usr/local/share/bash-completion/bash_completion

For older versions of bash: brew install bash-completion

add to .bash_profile:

[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion


sudo port install git +bash_completion

then add this to your .bash_profile:

if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion

more info in this guide: Install Bash git completion

Note that in all cases you need to create a new shell (open a new terminal tab/window) for changes to take effect.

Ubuntu 14.10

Install git-core and bash-completion

sudo apt-get install -y git-core bash-completion
  • For current session usage

    source /usr/share/bash-completion/completions/git
  • To have it always on for all sessions

    echo "source /usr/share/bash-completion/completions/git" >> ~/.bashrc

May be helpful for someone:--

After downloading the .git-completion.bash from the following link,

curl -o ~/.git-completion.bash

and trying to use __git_ps1 function, I was getting error as--

 -bash: __git_ps1: command not found

Apparently we need to download scripts separately from master to make this command work, as __git_ps1 is defined in . So similar to downloading .git-completion.bash , get the

curl -L > ~/.bash_git

and then add the following in your .bash_profile

source ~/.bash_git
if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash
export PS1='\W$(__git_ps1 "[%s]")>'

source ~/.bash.git will execute the downloaded file and

export PS1='\W$(__git_ps1 "[%s]") command will append the checkout out branch name after the current working directory(if its a git repository).

So it will look like:-

dir_Name[branch_name] where dir_Name is the working directory name and branch_name will be the name of the branch you are currently working on.

Please note -- __git_ps1 is case sensitive.

Most of the instructions you see will tell you to download

and source that in your bash startup script like .bashrc.

But there is a problem with that, because it is referencing the master branch, which is the latest version of git-completion.bash. The problem is that sometimes it will break because it is not compatible with the version of git you've installed.

In fact, right now that will break because the master branch's git-completion.bash has new features that requires git v2.18, which none of the package managers and installers have updated to yet. You'll get an error unknown option: --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config

So the safest solution is to reference the version/tag that matches the git you've installed. For example:

Note that it has a v2.17. in the URL instead of master. And then, of course, make sure to source that in the bash startup script.

i had same issue, followed below steps:

curl -o ~/.git-completion.bash

then add the following lines to your .bash_profile (generally under your home folder)

if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash

source :