title: How do Git's @{upstream} and @{push} differ?
body: <p>What's the difference between a Git branch's <code>@{upstream}</code> and the newer <code>@{push}</code>?</p>
  
  <p>As I understand it <code>@{upstream}</code> is the branch's upstream tracking ref, and <code>@{push}</code> is the ref a <code>push</code> will push to. To my intuition those are the same thing. Checking several handy branches <code>git rev-parse @{upstream}</code> is the same as <code>git rev-parse @{push}</code>, and (I thought possibly one would not resolve in the same way) <code>git rev-parse --abbrev-ref @{upstream}</code> is the same as <code>git rev-parse --abbrev-ref @{push}</code>.</p>