How to get git-completion.bash to work on Mac OS X?
I installed git using MacPorts on my new Snow Leopard installation. After MacPorts is installed from the .dmg image, these would be the commands in Terminal.app:
sudo port selfupdate
sudo port install git-core +bash_completion
If you also want support for pulling from SVN repositories and docs, use this instead of the second line:
sudo port install git-core +bash_completion +doc +svn
Then add the following to your ~/.profile or ~/.bash_profile:
# MacPorts Bash shell command completion if [ -f /opt/local/etc/bash_completion ]; then . /opt/local/etc/bash_completion fi
or for MacPorts since version 2.1.2 on Mountain Lion:
# MacPorts Bash shell command completion if [ -f /opt/local/etc/profile.d/bash_completion.sh ]; then . /opt/local/etc/profile.d/bash_completion.sh fi
or for MacPorts with newer versions of git:
if [ -f /opt/local/share/git-core/git-prompt.sh ]; then . /opt/local/share/git-core/git-prompt.sh fi
Note: bash 4.1 or higher is required by bash_completion.sh. If completion doesn't work try echo $BASH_VERSION
to see if that's the issue. If so, enter MacPorts bash by typing bash
and try git completion again.
If you installed git using homebrew than you might adjust the MacPorts advice a little and add this to your .bash_profile
and .bashrc
if [ -f `brew --prefix`/etc/bash_completion.d/git-completion.bash ]; then
. `brew --prefix`/etc/bash_completion.d/git-completion.bash
fi
The best way to check if you have git correctly installed using homebrew ist to execute
brew info git
and check the output for the install directory of the git bash completion
Latest version of Git (1.7.12) also requires the following to enable the prompt.
if [ -f `brew --prefix`/etc/bash_completion.d/git-prompt.sh ]; then
. `brew --prefix`/etc/bash_completion.d/git-prompt.sh
fi
All you need to do is place the git-completion.bash
file in your user home bin
directory and place the following in you .profile
or .bash_profile
file:
export PATH="$HOME/bin:$PATH"
source ~/bin/git-completion.bash
PS1='[\u@\h \w$(__git_ps1 " (%s)")]\$ '
What this does is make sure that your local bin is in the PATH and the source
command gets things going. Then of course the PS1 change puts the currently checked out branch in the prompt.
So, no MacPort install to then install a the "completion" version of GIT (especially irritating if you already have it installed).