Is there a better way to achieve the functionality of this alias?
set-upstream = "!sh -c 'current=$(git symbolic-ref HEAD); git branch \"$current\" --set-upstream \"$1\"/$(basename $current)' -"
(forgive me if stupid gmail word wrapped that line)
This allows me to write
$ git set-upstream origin
instead of
$ git branch <current branch> --set-upstream origin/<current branch>
which is a pain to write for several reasons: I have to remember the current branch name, that name might be long, and shell autocomplete doesn't know about --set-upstream yet so won't complete the second occurrence.
Having a dedicated script (or git command) rather than an alias would allow greater functionality like: - automatically pick the remote name if there's only one remote, - a flag to automatically set upstream on all branches (that having matching remotes)
I don't understand why all my branches haven't automatically had the right upstream set anyway - am I missing some configuration of pull and push?