Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
List only local branches when autocompleting git checkout (Zsh)
git config --global alias.checkoutr checkout
$EDITOR /usr/local/share/zsh/site-functions/git-completion.bash

...and then modify the file as follows...

-__gitcomp_nl "$(__git_refs '' $track)"
+if [ "$command" = "checkoutr" ]; then
+    __gitcomp_nl "$(__git_refs '' $track)"
+    __gitcomp_nl "$(__git_heads '' $track)"

... and source your shell (source ~/.bashrc / source ~/.zshrc...).

Use git checkoutr for the default behavior and git checkout (or just gco) for browsing only local branches. Credits to

Copy link

@KarelCemus Hmm I don't have this plugin enabled.

I have the following enabled: plugins=(git keychain gpg-agent)

Copy link

@anthonycvella I didn't have it enabled either. My point is when I did enable gitfast it magically started to work; although there is not much magic, I've read the scripts so IMO this plugin must be enabled in order to have this working. Can you try to enable gitfast and check if this gist works for you?

Copy link

ekoneko commented Oct 20, 2022

@luoluoluolin It not works for me in dwim mode. I think $dwim_opt is not necessary if only want to get local branches?

-                       __git_complete_refs $dwim_opt --mode="refs"
+                       __git_complete_refs --mode="heads"

or run

git config --global --type=bool checkout.guess false

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment