Code

user-manual: update references discussion
authorJ. Bruce Fields <bfields@citi.umich.edu>
Mon, 22 Jan 2007 03:31:07 +0000 (22:31 -0500)
committerJ. Bruce Fields <bfields@citi.umich.edu>
Mon, 22 Jan 2007 03:31:07 +0000 (22:31 -0500)
Since references may be packed, it's no longer as helpful to
introduce references as paths relative to .git.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Documentation/user-manual.txt

index 267bbd736746dd338c0e429597a7ccbe2edb8dd7..6c858aaddc72a4ffcb23bb7e537bc2845fea8fb2 100644 (file)
@@ -506,41 +506,33 @@ Note that the name "origin" is just the name that git uses by default
 to refer to the repository that you cloned from.
 
 [[how-git-stores-references]]
-How git stores references
--------------------------
+Naming branches, tags, and other references
+-------------------------------------------
 
 Branches, remote-tracking branches, and tags are all references to
-commits.  Git stores these references in the ".git" directory.  Most
-of them are stored in .git/refs/:
-
-       - branches are stored in .git/refs/heads
-       - tags are stored in .git/refs/tags
-       - remote-tracking branches for "origin" are stored in
-         .git/refs/remotes/origin/
+commits.  All references are named with a slash-separated path name
+starting with "refs"; the names we've been using so far are actually
+shorthand:
 
-If you look at one of these files you will see that they usually
-contain just the SHA1 id of a commit:
+       - The branch "test" is short for "refs/heads/test".
+       - The tag "v2.6.18" is short for "refs/tags/v2.6.18".
+       - "origin/master" is short for "refs/remotes/origin/master".
 
-------------------------------------------------
-$ ls .git/refs/heads/
-master
-$ cat .git/refs/heads/master
-c0f982dcf188d55db9d932a39d4ea7becaa55fed
-------------------------------------------------
+The full name is occasionally useful if, for example, there ever
+exists a tag and a branch with the same name.
 
-You can refer to a reference by its path relative to the .git
-directory.  However, we've seen above that git will also accept
-shorter names; for example, "master" is an acceptable shortcut for
-"refs/heads/master", and "origin/master" is a shortcut for
-"refs/remotes/origin/master".
+As another useful shortcut, if the repository "origin" posesses only
+a single branch, you can refer to that branch as just "origin".
 
-As another useful shortcut, you can also refer to the "HEAD" of
-"origin" (or any other remote), using just the name of the remote.
+More generally, if you have defined a remote repository named
+"example", you can refer to the branch in that repository as
+"example".  And for a repository with multiple branches, this will
+refer to the branch designated as the "HEAD" branch.
 
 For the complete list of paths which git checks for references, and
-how it decides which to choose when there are multiple references
-with the same name, see the "SPECIFYING REVISIONS" section of
-gitlink:git-rev-parse[1].
+the order it uses to decide which to choose when there are multiple
+references with the same shorthand name, see the "SPECIFYING
+REVISIONS" section of gitlink:git-rev-parse[1].
 
 [[Updating-a-repository-with-git-fetch]]
 Updating a repository with git fetch