On Sat, 8 Jan 2011, Junio C Hamano wrote: > Jeff King <peff@xxxxxxxx> writes: > > > On Sat, Jan 08, 2011 at 03:40:33PM -0500, Martin von Zweigbergk wrote: > > > >> > 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. > >> > > >> > That being said, it probably would make more sense for "git checkout" to > >> > prefer branches to tags. > >> > >> What was the rationale for generally favoring tags? > > > > I don't recall hearing any specific argument, but it has always been > > that way from early on. I think it is from a vague sense of "tags are > > more important than branch tips because they are about marking specific > > points, not lines of development". But maybe other old-timers can say > > more. > > > Aside from your "'checkout branch' is about checking out a branch" > explanation, there are two reasons to favor branches over tags in > "checkout" command: > > (1) You cannot disambiguate "git checkout heads/master" when you have > "master" tag, as this notation is used to tell the command "I want to > detach HEAD at that commit"; and Interesting. I had no idea that 'git checkout heads/master' means to detach the HEAD. Thanks. By analogy, I guess that means that 'git rebase master heads/topic' is supposed to rebase a detached HEAD, so I will stop trying to "fix" that then :-) > (2) The command already treats an unadorned branch name specially by not > complaining ref/path ambiguity when you said "git checkout master" > and you have a file called "master" in your working tree, so users > already expect that an unadorned branch name is special to it. If I understand correctly, that actually applies to tags as well. Checking out a tag called e.g. Makefile doesn't give any warnings or errors. /Martin -- 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