git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: How to get the branch HEAD points to using a plumbing command?

From
Jeff King <peff@peff.net>
Date
Jan 5, 2021, 20:01 UTC
Message-ID
<X/TFh+SLYqbT1lT9@coredump.intra.peff.net>
In-Reply-To
<8735zfs8xj.fsf@evledraar.gmail.com>
On Tue, Jan 05, 2021 at 04:24:56PM +0100, Ævar Arnfjörð Bjarmason wrote:
Show 13 quoted lines
> > My question is, is there a "better" (more idiomatic, less
> > "expensive", etc.) way of doing it using only one plumbing command?
> > This solution is OK but it is more work than just matching one line
> > with a regular expression. The reason I want to do this using only
> > plumbing commands is because I think that plumbing command interface
> > would be more stable than the format (organization, structure) of
> > files under the `.git/` directory across Git versions. Please
> > correct me if I'm wrong in this idea as well.
> 
> You'll want to use git-rev-parse for this, e.g.:
> 
>     $ git rev-parse --symbolic-full-name HEAD
>     refs/heads/master
Another option is:
  git symbolic-ref HEAD

which has the benefit of working even when HEAD points to an unborn branch. It also has a --short option to drop the refs/heads/ part.

It's also worth noting what you'd see on a detached HEAD. With rev-parse you'll see "HEAD", but symbolic-ref will exit with a non-zero code.

-Peff
Previous: Ævar Arnfjörð BjarmasonNext: Junio C Hamano
Message 3 of 4 in “How to get the branch HEAD points to using a plumbing command?”
  1. UtkuJan 5, 2021
  2. Ævar Arnfjörð BjarmasonJan 5, 2021
  3. Jeff KingJan 5, 2021
  4. Junio C HamanoJan 5, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.