Utku <ugultopu@xxxxxxxxx> writes: > 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. The "HEAD" pointer can be a symbolic link, not a text file with "ref: refs/heads/..." in it, and any approach that works directly with "cat .git/HEAD" would be incorrect, unless it does a stat on .git/HEAD first to see if it is a symlink. And such implementation details can change over time. So you are right to seek a solution that hides such details from you, i.e. a Git command, to do so. It does not have to be plumbing, though. The orthodox answer would be to use "git symbolic-ref". When you want to learn which underlying ref a symbolic ref is pointing at, that is the tool designed to answer that question.