[SOLVED] `git fetch tag NAME' into mirror repo does not update HEAD, what to do?
From: Brian Foster <hidden>
Date: 2016-06-15 22:49:18
On Thursday 12 August 2010 13:05:29 Tomas Carnecky wrote:
On 8/12/10 12:38 PM, Brian Foster wrote:quoted
On Thursday 12 August 2010 10:33:13 Tomas Carnecky wrote: [ ... ]quoted
Fetch only fetches commits. It doesn't update any local refs (other than FETCH_HEAD). If you want to switch HEAD to that new tag, use checkout.Oh boy, that explanation is really bad -.- What I meant is that if you don't supply the <dst> part of the refspec it will only update FETCH_HEAD. So 'git fetch origin master' will not update anything but FETCH_HEAD.
I concur. However, the “refspec” in this case is the obscure ‘tag TAGNAME’ (where the ‘tag’ is a keyword); see get-fetch(1) at the end of §OPTIONS where it describes “short-cut notations”. That does not seem to accept a :<dst>, nor would I be too sure what it meant if it did.
quoted
No, a fetch in a mirror, when fetching all the way to the HEAD (e.g., a simple `git fetch origin'), does update the branch. [ ... ]There are different ways to invoke git fetch. Either way, fetch will never modify HEAD. However, it can modify the branch that HEAD is pointing to (in case HEAD is a symref).
Point taken, I was being sloppy. We want the head of the relevant branch (master) to be updated in our bare (mirror) repository.
But you are not fetching a branch, you are fetching a tag. So you need to use checkout after you fetch it. Either 'git checkout FETCH_HEAD' or 'git checkout v2'.
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.
cheers!
-blf-