On Thursday 12 August 2010 14:32:41 Tomas Carnecky wrote: > 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- -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html