On my Linux machine I have autocomplete for branches with Git.
[Note we are talking about git branch completion, not bash completion (e.g. commands, files, etc). Thus NOT Lane's answer at all]
For example I can type git checkout
+TAB and get a list of branches.
Or I can type git checkout feb*
+TAB to get all branches that begin with "feb".
How can I get this functionality on a Mac?
I tried downloading and running bash-completion/bash_completion
and bash-completion/bash_completion.sh.in
but no joy. The first gave error messages about declare: -A invalid_option
. The second gave no errors. When I git checkout
+TAB though I am still getting a list of files in the directory, not branches. I am in the project root.
Auto-complete for directories and bash commands are working ok, so it's specific to Git.
Best Answer
ok, so I needed the git autocompletion script.
I got that from this url:
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash
No need to worry about what directory you're in when you run this as your home directory(
~
) is used with the target.Then I added to my
~/.bash_profile
file the following 'execute if it exists' code:Update: I'm making these bits of code more concise to shrink down my
.bashrc
file, in this case I now use:Note:
$_
means the last argument to the previous command. so. $_
means run it - "it" being.git-completion.bash
in this caseThis still works on both Ubuntu and OSX and on machines without the script
.git-completion.bash
script.Now
git
Tab (actually it'sgit
TabTab ) works like a charm!p.s.: If this doesn't work off the bat, you may need to run
chmod u+x ~/.git-completion.bash
to grant yourself the necessary permission:chmod
is the command that modifies file permissionsu
means the user that owns the file, by default its creator, i.e. you+
means set/activate/add a permissionx
means execute permission, i.e. the ability to run the script