W dniu 20.09.2016 o 20:54, Bryan Turner pisze: > On Tue, Sep 20, 2016 at 9:23 AM, Steffen Nurpmeso <stef...@sdaoden.eu> wrote: >> Hello again, >> >> yah, sorry, i'm back again.. >> I try to find a way to find the name of the current branch in an >> automated way, because i need to ensure that a commit happens on >> it and no other branch. Now the problem arises that the commit >> ref at the time of that commit maybe shared in between several >> different branches, but no more thereafter, of course: >> >> ?0[steffen@wales ]$ git branch|grep '^*' >> * stable/v14.9
Not good, 'git branch' is a porcelain (user facing) command, so it output may change; e.g. '*' could be replaced with '•'. For example output for detached HEAD had changed! >> ?0[steffen@wales ]$ git name-rev --name-only HEAD >> stable/v14.8 >> >> Is there another way except looking into .git/HEAD or using sed(1) >> on the output of `branch' to find the right name? > > Have you tried "git symbolic-ref HEAD"? > > $ git symbolic-ref HEAD > refs/heads/master > > If you don't want the fully-qualified ref, you can add --short: > > $ git symbolic-ref --short HEAD > master This does not work for detached HEAD, but perhaps you don't need to worry about this. $ git rev-parse --symbolic-full-name HEAD refs/heads/master But $ git checkout HEAD^0 Note: checking out 'HEAD^0'. You are in 'detached HEAD' state. [...] $ git rev-parse --symbolic-full-name HEAD HEAD $ git symbolic-ref HEAD fatal: ref HEAD is not a symbolic ref $ git branch * (HEAD detached at 3e2ebf9) master -- Jakub Narębski