Re: [SOLVED] `git fetch tag NAME' into mirror repo does not update HEAD, what to do?
- From
Tomas Carnecky <tom@dbservice.com>
- Date
- Aug 12, 2010, 12:32 UTC
- Message-ID
- <4C63E9E9.7070105@dbservice.com>
- In-Reply-To
- <201008121416.35887.brian.foster@innova-card.com>
On 8/12/10 2:16 PM, Brian Foster wrote:
Show 11 quoted lines
> NO. ‘get checkout ...’ does not work in a bare repository. > (You can modify my trivial posted script to prove this.) > > However, your comment got me to thinking. This _does_ work: > > git reset --soft FETCH_HEAD > > (And, I presume without testing, so would ‘... v2’ ?) > 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 :).
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. 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). When you use '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).
tom