What's the difference between a Git branch's @{upstream} and the newer @{push}?
As I understand it @{upstream} is the branch's upstream tracking ref, and @{push} is the ref a push will push to. To my intuition those are the same thing. Checking several handy branches git rev-parse @{upstream} is the same as git rev-parse @{push}, and (I thought possibly one would not resolve in the same way) git rev-parse --abbrev-ref @{upstream} is the same as git rev-parse --abbrev-ref @{push}.
@{upstream}and@{push}indeed point to the same thing... when they do.Jokes aside, I mean this is only coincidentally true, it's a consequence of two config entries pointing to the same remote, but they could be different.
There's an excellent example on this page.
Specifically, this part :