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

Re: Proper way to checkout a tag?

From
Michael J Gruber <git@drmicha.warpmail.net>
Date
Dec 2, 2010, 08:33 UTC
Message-ID
<4CF759CE.5010705@drmicha.warpmail.net>
In-Reply-To
<AANLkTim=0dqH=gqbM1xQOWQPCZb78wfsn9wf5WRJJ9vt@mail.gmail.com>
Dun Peal venit, vidit, dixit 01.12.2010 21:16:
Show 13 quoted lines
> On Wed, Dec 1, 2010 at 1:51 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:
>> The idea is this: when you check out a tag or a remote-tracking
>> branch, it is not to make changes to it.  Tags are unchanging,
>> remote-tracking branches track remote state that the user does not
>> directly control.
> 
> Yes, users checkout a release tag just so they can build parts of it.
> There's definitely no intention of creating new changes on top of
> them, and if there is then it should properly be a head (branch).
> 
> I guess that's exactly the use-case for detached HEAD, so I guess the
> answer is that we should all stop being afraid of that superficially
> scary term.

It's really one of the most useful features of git (as Jonathan explained). There are two things which make it scary:

- The name. We could call it differently (free head, unbound head,
branchless head, west coast head...).
- The garbage collection. It's easy to commit on top of a detached head
by mistake, and once you switch away from that, it's difficult to find
it again (reflog) and easy to lose (gc/prune).

Though the "throw-away" nature of detached heads is a useful feature, we could possibly help users who commit on top of them better.

Michael
Previous: Dun Peal
Message 4 of 4 in “Proper way to checkout a tag?”
  1. Dun PealDec 1, 2010
  2. Jonathan NiederDec 1, 2010
  3. Dun PealDec 1, 2010
  4. Michael J GruberDec 2, 2010

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.