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

Re: [SOLVED] `git fetch tag NAME' into mirror repo does not update HEAD, what to do?

From
BFBrian Foster <brian.foster@innova-card.com>
Date
Aug 12, 2010, 13:22 UTC
Message-ID
<201008121522.55020.brian.foster@innova-card.com>
In-Reply-To
<4C63E9E9.7070105@dbservice.com>
On Thursday 12 August 2010 14:32:41 Tomas Carnecky wrote:
Show 11 quoted lines
> On 8/12/10 2:16 PM, Brian Foster wrote:
> >[ ... ]  This _does_ work:
> > 
> >     git reset --soft FETCH_HEAD
> >[ ... ] 
> >  Given that git-reset(1)'s purpose is to change the branch's
> >  head (or to change HEAD as I've been incorrectly describing
> >  it), that does make sense.
> 
> I expected git checkout to work even in a bare repo - as you can
> see I don't work that often inside bare repos :).
 <<<giggles>>>  No problem!  (I don't either, this situation was
 unexpected, but as SLAVE lagging behind ORIG is anticipated as
 being the usual case, we need to understand it.)
> You should use update-ref instead of reset. The problem with reset is
> that it changes the branch and not HEAD. Say initially your mirror had
> HEAD as symref pointing to refs/heads/master.
 Correct, it does.
>                                               When you run reset --soft
> v2 your master branch will now point to the same commit as the tag v2
> (and HEAD will be still pointing to refs/heads/master).
 Correct, that is what happens.  It also looks Ok to me,
 nor have any tests hit any snags.  It also happens to
 match how we (eventually) manually repaired SLAVE.
>                                                         When you use
> 'git update-ref --no-deref HEAD v2' it will modify HEAD
 NO, it gets an error (following is from a modified version
 of my previously-posted script):
────────────────────────────────────────────────────────
 ...
+ cd ../SLAVE.git                                           
+ git fetch --verbose origin tag v2                         
 ...
From /work/tmp/git/ORIG                      
 * [new tag]         v2         -> v2        
+ git update-ref --no-deref HEAD v2          
error: Trying to write non-commit object 2bc324e6a68cb3704448c9f63ddc3bc0260c0b48 to branch HEAD                                                                                
fatal: Cannot update the ref 'HEAD'.                                                    
$ 
────────────────────────────────────────────────────────
 Using ‘git update-ref --no-deref HEAD FETCH_HEAD’ does
 not error, and, as you say (below), does seem to give
 me a detached head.
> 'git update-ref --no-deref HEAD v2' it will modify HEAD directly and
> have it point directly to the same commit as v2 (also called detached HEAD).
 I do_not_ want a detached head!  This has perhaps been
 confused by my improperly saying “update HEAD” when I
 meant “update the master branch”.  If you look back at
 my originally-posted diagrams, it's a reasonable guess
 I don't want a detached head.  Having HEAD continue to
 be a symref to refs/heads/master (which, in this case,
 is the same commit as v2) is correct.
 Thanks for your help, advice, and hints.
cheers!
	-blf-
Previous: Tomas CarneckyNext: Tomas Carnecky
Message 7 of 11 in “[Q] `git fetch tag NAME' into mirror repo does not update HEAD, what to do?”
  1. Brian FosterAug 12, 2010
  2. Tomas CarneckyAug 12, 2010
  3. Brian FosterAug 12, 2010
  4. Tomas CarneckyAug 12, 2010
  5. [SOLVED] `git fetch tag NAME' into mirror repo does not update HEAD, what to do?Brian Foster, Aug 12, 2010
  6. Tomas CarneckyAug 12, 2010
  7. Brian FosterAug 12, 2010
  8. Tomas CarneckyAug 12, 2010
  9. Brian FosterAug 13, 2010
  10. Brandon CaseyAug 12, 2010
  11. Brian FosterAug 13, 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.