From: Tomas Carnecky Date: Thu, 12 Aug 2010 12:32:41 GMT Subject: Re: [SOLVED] `git fetch tag NAME' into mirror repo does not update HEAD, what to do? 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: > 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