From: Jeff King Date: Wed, 12 Jan 2011 17:46:00 GMT Subject: Re: bug? in checkout with ambiguous refnames Message-ID: <20110112174600.GB31747@sigill.intra.peff.net> In-Reply-To: <20110112091130.GC24920@pengutronix.de> On Wed, Jan 12, 2011 at 10:11:30AM +0100, Uwe Kleine-König wrote: > > > So working copy and cache are at refs/tags/sgu/mxs-amba-uart, HEAD > > > points to refs/heads/sgu/mxs-amba-uart > > > > Yeah, we generally resolve ambiguities in favor of the tag (and that > > warning comes from deep within get_sha1_basic). So the real bug here is > > that it still said "Switched to branch", which is totally wrong. > I wonder how I can resolve the ambiguity when calling checkout. (Well > apart from changing either branch name or tag name) > > git checkout refs/heads/sgu/mxs-amba-uart results in a detached HEAD. You can't disambiguate to the branch without going to a detached HEAD in the current code; it's just broken[1]. With the patch here: http://article.gmane.org/gmane.comp.version-control.git/164986 it will disambiguate to the branch by default, and if you want the tag, you can do: git checkout tags/sgu/mxs-amba-uart -Peff [1]: You can't do it with checkout, that is. You can still hack around it with: branch=refs/heads/sgu/mxs-amba-uart git read-tree -m -u $branch && git symbolic-ref HEAD $branch which is a simplified version of what checkout is doing.