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

Re: [PATCH 02/13] Use current "detached HEAD" message

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Aug 25, 2013, 03:49 UTC
Message-ID
<20130825034916.GB2882@elie.Belkin>
In-Reply-To
<1667680014.1090850.1377329140347.JavaMail.ngmail@webmail08.arcor-online.net>
Thomas Ackermann wrote:
Show 22 quoted lines
> --- a/Documentation/user-manual.txt
> +++ b/Documentation/user-manual.txt
> @@ -312,10 +312,17 @@ 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>
> +	Note: checking out 'v2.6.17'.
> +
> +	You are in 'detached HEAD' state. You can look around, make experimental
> +	changes and commit them, and you can discard any commits you make in this
> +	state without impacting any branches by performing another checkout.
> +
> +	If you want to create a new branch to retain commits you create, 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

I wonder if this longer wall of text (added in 13be3e31, 2010-01-29) is too aggressive.

It is the only piece of advice that I explicitly disable in ~/.gitconfig, so I haven't looked at it again for a while. Since then, the usual stream of questions about how to recover from people who accidentally detached HEAD has still been showing up in #git, so I don't think the message succeeded in its purpose.

That might be partly because it is too long to digest at a glance.
When I see this message, what I actually take in is
                  $ git checkout v1.7.3
 Hmm, capital --->Note: checking out 'v1.7.3'.
 heading before
 lowercase        You are in 'detached HEAD' state. You ...
 sentence.
                                                            ... checkout.
                  If you want ...
                  do so (now or later) by using -b               .... Example:
                    git ...
                  HEAD is ...
 Phew, I can ---->$
 type commands
 again.
Whereas I think the message is just meant to convey the following:
      $ git checkout v2.6.17
      note: checking out a tag for inspection and discardable experiments on top
      To create a new branch to save your changes:
            git checkout -b my-branch-based-on-v2.6.17
      HEAD is now at 427abfa... Linux v2.6.17
      $
Show 8 quoted lines
>  ------------------------------------------------
>  
> @@ -326,7 +333,7 @@ and git branch shows that you are no longer on a branch:
>  $ cat .git/HEAD
>  427abfa28afedffadfca9dd8b067eb6d36bac53f
>  $ git branch
> -* (no branch)
> +* (detached from v2.6.17)
	grep "no branch" Documentation/user-manual.txt

finds two other instances of that message, which this branch doesn't touch. One is about a bisection, where (no branch) is pretty close to the actual message ('(no branch, bisect started on master)'). The other is about submodules. Here's a patch for potential squashing in that corrects it.

Thanks, Jonathan

diff --git i/Documentation/user-manual.txt w/Documentation/user-manual.txt
index 3e226190..b76219ee 100644
--- i/Documentation/user-manual.txt
+++ w/Documentation/user-manual.txt
@@ -3647,7 +3647,7 @@ working on a branch.
 
 -------------------------------------------------
 $ git branch
-* (no branch)
+* (detached from d266b98)
   master
 -------------------------------------------------
 
Previous: Thomas AckermannNext: Thomas Ackermann
Message 6 of 44 in “Modernize user-manual”
  1. 0/13 Modernize user-manualThomas Ackermann, Aug 24, 2013
  2. 01/13 Call it "Git User Manual" and remove reference to very old Git versionThomas Ackermann, Aug 24, 2013
  3. Jonathan NiederAug 25, 2013
  4. Junio C HamanoAug 25, 2013
  5. 02/13 Use current "detached HEAD" messageThomas Ackermann, Aug 24, 2013
  6. Jonathan NiederAug 25, 2013
  7. Aw: Re: [PATCH 02/13] Use current "detached HEAD" messageThomas Ackermann, Aug 25, 2013
  8. 03/13 Use current output for "git repack"Thomas Ackermann, Aug 24, 2013
  9. Jonathan NiederAug 25, 2013
  10. Aw: Re: [PATCH 03/13] Use current output for "git repack"Thomas Ackermann, Aug 25, 2013
  11. 04/13 Use "git merge" instead of "git pull ."Thomas Ackermann, Aug 24, 2013
  12. Junio C HamanoAug 25, 2013
  13. Jonathan NiederAug 25, 2013
  14. Martin von ZweigbergkAug 25, 2013
  15. 05/13 Fix some typosThomas Ackermann, Aug 24, 2013
  16. Jonathan NiederAug 25, 2013
  17. Aw: Re: [PATCH 05/13] Fix some typosThomas Ackermann, Aug 25, 2013
  18. 06/13 Simplify "How to make a commit"Thomas Ackermann, Aug 24, 2013
  19. Junio C HamanoAug 25, 2013
  20. Jonathan NiederAug 25, 2013
  21. Aw: Re: [PATCH 06/13] Simplify "How to make a commit"Thomas Ackermann, Aug 25, 2013
  22. 07/13 Improve description in "How to merge"Thomas Ackermann, Aug 24, 2013
  23. Junio C HamanoAug 25, 2013
  24. Jonathan NiederAug 25, 2013
  25. Aw: Re: [PATCH 07/13] Improve description in "How to merge"Thomas Ackermann, Aug 25, 2013
  26. 08/13 Improve section "Manipulating branches"Thomas Ackermann, Aug 24, 2013
  27. Junio C HamanoAug 25, 2013
  28. Aw: Re: [PATCH 08/13] Improve section "Manipulating branches"Thomas Ackermann, Aug 25, 2013
  29. 09/13 Improve section "Merge multiple trees"Thomas Ackermann, Aug 24, 2013
  30. Jonathan NiederAug 25, 2013
  31. Aw: Re: [PATCH 09/13] Improve section "Merge multiple trees"Thomas Ackermann, Aug 25, 2013
  32. Jonathan NiederAug 25, 2013
  33. 10/13 Remove unnecessary historical note from "Object storage format"Thomas Ackermann, Aug 24, 2013
  34. Junio C HamanoAug 25, 2013
  35. 11/13 Remove obscure reference from "Examples"Thomas Ackermann, Aug 24, 2013
  36. Junio C HamanoAug 25, 2013
  37. Jonathan NiederAug 25, 2013
  38. Aw: Re: [PATCH 11/13] Remove obscure reference from "Examples"Thomas Ackermann, Aug 25, 2013
  39. 12/13 Remove irrelevant reference from "Tying it all together"Thomas Ackermann, Aug 24, 2013
  40. Junio C HamanoAug 25, 2013
  41. Jon LoeligerAug 26, 2013
  42. 13/13 "git prune" is safe nowThomas Ackermann, Aug 24, 2013
  43. Junio C HamanoAug 25, 2013
  44. Philip OakleyAug 24, 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.