Autocomplete Git Commands and Branch Names in Bash
In bash in Mac OS X, you can use [TAB] to autocomplete file paths. Wouldn’t if be nice if you could do the same with git commands and branch names?
You can. Here’s how.
First get the git-completion.bash
script (view it here) and put it in your home directory:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash
Next, add the following lines to your .bash_profile
. This tells bash to execute the git autocomplete script if it exists.
if [ -f ~/.git-completion.bash ]; then
. ~/.git-completion.bash
fi
Now open a new shell, cd
into a git repo, and start typing a git command. You should find that [TAB] now autocompletes git commands and git branch names.
For example, if you type git
then add a space and hit [TAB], you’ll get a readout like this, which lists all available git commands:
add filter-branch reflog
am format-patch relink
annotate fsck remote
apply gc repack
archive get-tar-commit-id replace
bisect grep request-pull
blame gui reset
branch help revert
bundle imap-send rm
checkout init send-email
cherry instaweb shortlog
cherry-pick log show
citool merge show-branch
clean mergetool stage
clone mv stash
commit name-rev status
config notes submodule
describe p4 svn
diff pull tag
difftool push whatchanged
fetch rebase
Now to learn what some of these more exotic git commands do! What’s your favorite git command?
(I learned this way of installing git-completion.bash
here.)