_git_remote_branch() { ref=$(git symbolic-ref HEAD 2> /dev/null) if [[ -n $ref ]]; then if (( CURRENT == 2 )); then # first arg: operation compadd create publish rename delete track elif (( CURRENT == 3 )); then # second arg: remote branch name remotes=`git remote | tr '\n' '|' | sed "s/\|$//g"` compadd `git branch -r | grep -v HEAD | sed "s/$remotes\///" | sed "s/ //g"` elif (( CURRENT == 4 )); then # third arg: remote name compadd `git remote` fi else; _files fi } compdef _git_remote_branch grb