Wait, what exactly happens in that last one that I shouldn't dare do?
git branch --set-upstream origin/foo
This counter-intuitively creates a LOCAL (!) branch named origin/foo which tracks the current branch. I would expect this to set the upstream of the current branch, given that most commands operate on the current branch unless otherwise specified. Instead it does something completely unexpected and useless.Regardless, my point is the interface is horrible and this is just adding to the patchwork. Why not add --track semantics or unify these flags?