Hi Phillip, it does not work for a fresh clone of an empty repository git for-each-ref --format="%(upstream:short)" refs/heads/master outputs nothing, while git status -b --no-ahead-behind --porcelain=v2 outputs # branch.oid (initial) # branch.head master # branch.upstream origin/master I.e. it outputs a proper upstream branch. Best regards Ondra Ondra Medek On Tue, 14 Nov 2023 at 13:28, Phillip Wood <phillip.wood123@xxxxxxxxx> wrote: > > Hi Ondra > > On 14/11/2023 10:16, Ondra Medek wrote: > > Hello, > > I am working on a tol which should fetch changes from a remote > > repository on a user click. I want to limit fetch on the current > > remote tracking branch (something like "origin/master"), but > > surprisingly, it's hard to get it for all corner cases like a fresh > > clone of an empty repository or detached head, etc. E.g see this SO > > thread https://stackoverflow.com/questions/171550/find-out-which-remote-branch-a-local-branch-is-tracking/52896538 > > I think you can do this by calling > > git symbolic-ref --quiet HEAD > > to get the full refname of the current branch. If HEAD is detached it > will print nothing and exit with exit code 1. Then you can call > > git for-each-ref --format="%(upstream:short)" $refname > > to get the upstream branch > > Best Wishes > > Phillip