SYNOPSIS
git symbolic-ref [-q] [-m <reason>] <name> [<ref>]
DESCRIPTION
Given one argument, reads which branch head the given symbolic
ref refers to and outputs its path, relative to the .git/
directory. Typically you would give HEAD
as the <name>
argument to see which branch your working tree is on.
Given two arguments, creates or updates a symbolic ref <name> to point at the given branch <ref>.
A symbolic ref is a regular file that stores a string that
begins with ref: refs/
. For example, your .git/HEAD
is
a regular file whose contents is ref: refs/heads/master
.
OPTIONS
- -q
- --quiet
-
Do not issue an error message if the <name> is not a symbolic ref but a detached HEAD; instead exit with non-zero status silently.
- -m
-
Update the reflog for <name> with <reason>. This is valid only when creating or updating a symbolic ref.
NOTES
In the past, .git/HEAD
was a symbolic link pointing at
refs/heads/master
. When we wanted to switch to another branch,
we did ln -sf refs/heads/newbranch .git/HEAD
, and when we wanted
to find out which branch we are on, we did readlink .git/HEAD
.
This was fine, and internally that is what still happens by
default, but on platforms that do not have working symlinks,
or that do not have the readlink(1)
command, this was a bit
cumbersome. On some platforms, ln -sf
does not even work as
advertised (horrors). Therefore symbolic links are now deprecated
and symbolic refs are used by default.
git symbolic-ref will exit with status 0 if the contents of the symbolic ref were printed correctly, with status 1 if the requested name is not a symbolic ref, or 128 if another error occurs.
Author
Written by Junio C Hamano <gitster@pobox.com>
GIT
Part of the git(1) suite