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

[PATCH] glossary: extend "detached HEAD" description

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 5, 2013, 15:19 UTC
Message-ID
<7vwqshc8ec.fsf@alter.siamese.dyndns.org>

When we introduced the concept of "detached HEAD", we made sure that commands that operate on the history of the current branch "just work" in that state. They update the HEAD to point at the new history without affecting any branch when the HEAD is detached, just like they update the tip of the "current branch" to point at the new history when HEAD points at a specific branch.

As this is done as the natural extension for these commands, we did not, we still do not, and we do not want to repeat "A detached HEAD is updated without affecting any branch" when describing what each and every one of these commands that operate "on the current branch" do.

Add a blanket description to the glossary to cover them instead. The general principle is that operations to update the branch work and affect on the HEAD, while operations to update the information about a branch do not.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 * Noticed that we describe "commit --amend" as updating "the
   current branch" while reviewing the recent update by CMN, and it
   is shared by all the manual pages of commands that work on "the
   current branch".  "git grep -i detached Documentation/" shows
   very small number of hits, indicating that we do not repeat "if
   detached, only the HEAD is updated".
   I am not absolutely sure if glossary is the best place, but
   something like this may be necessary to help people who are new
   to this state.
 Documentation/glossary-content.txt | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/Documentation/glossary-content.txt b/Documentation/glossary-content.txt
index f928b57..69c90d1 100644
--- a/Documentation/glossary-content.txt
+++ b/Documentation/glossary-content.txt
@@ -100,9 +100,22 @@ to point at the new commit.
 
 [[def_detached_HEAD]]detached HEAD::
 	Normally the <<def_HEAD,HEAD>> stores the name of a
-	<<def_branch,branch>>.  However, git also allows you to <<def_checkout,check out>>
-	an arbitrary <<def_commit,commit>> that isn't necessarily the tip of any
-	particular branch.  In this case HEAD is said to be "detached".
+	<<def_branch,branch>>, and commands that operate on the
+	history HEAD represents operate on the history leading to the
+	tip of the branch the HEAD points at.  However, Git also
+	allows you to <<def_checkout,check out>> an arbitrary
+	<<def_commit,commit>> that isn't necessarily the tip of any
+	particular branch.  The HEAD in such a state is called
+	"detached".
++
+Note that commands that operate on the history of the current branch
+(e.g. `git commit` to build a new history on top of it) still work
+while the HEAD is detached. They update the HEAD to point at the tip
+of the updated history without affecting any branch.  Commands that
+update or inquire information _about_ the current branch (e.g. `git
+branch --set-upstream-to` that sets what remote tracking branch the
+current branch integrates with) obviously do not work, as there is no
+(real) current branch to ask about in this state.
 
 [[def_dircache]]dircache::
 	You are *waaaaay* behind. See <<def_index,index>>.
Next: Eric Sunshine
Message 1 of 6 in “glossary: extend "detached HEAD" description”
  1. glossary: extend "detached HEAD" descriptionJunio C Hamano, Apr 5, 2013
  2. Eric SunshineApr 5, 2013
  3. Jakub NarębskiApr 10, 2013
  4. Junio C HamanoApr 10, 2013
  5. Jakub NarębskiApr 10, 2013
  6. Junio C HamanoApr 10, 2013

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.