user-manual: detached HEAD

Add a brief mention of detached HEADs and .git/HEAD.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
J. Bruce Fields 2007-04-16 00:37:14 -04:00 committed by Junio C Hamano
parent 4f75240796
commit 72a76c955b

View file

@ -495,8 +495,48 @@ git checkout -b <new> <start-point>::
create a new branch <new> referencing <start-point>, and
check it out.
It is also useful to know that the special symbol "HEAD" can always
be used to refer to the current branch.
The special symbol "HEAD" can always be used to refer to the current
branch. In fact, git uses a file named "HEAD" in the .git directory to
remember which branch is current:
------------------------------------------------
$ cat .git/HEAD
ref: refs/heads/master
------------------------------------------------
Examining an old version without creating a new branch
------------------------------------------------------
The git-checkout command normally expects a branch head, but will also
accept an arbitrary commit; for example, you can check out the commit
referenced by a tag:
------------------------------------------------
$ git checkout v2.6.17
Note: moving to "v2.6.17" which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
git checkout -b <new_branch_name>
HEAD is now at 427abfa... Linux v2.6.17
------------------------------------------------
The HEAD then refers to the SHA1 of the commit instead of to a branch,
and git branch shows that you are no longer on a branch:
------------------------------------------------
$ cat .git/HEAD
427abfa28afedffadfca9dd8b067eb6d36bac53f
git branch
* (no branch)
master
------------------------------------------------
In this case we say that the HEAD is "detached".
This can be an easy way to check out a particular version without having
to make up a name for a new branch. However, keep in mind that when you
switch away from the (for example, by checking out something else), you
can lose track of what the HEAD used to point to.
Examining branches from a remote repository
-------------------------------------------