On Fri, 7 Jan 2011, Jeff King wrote: > On Fri, Jan 07, 2011 at 11:46:50AM +0100, Uwe Kleine-K?nig wrote: > > > ukl@octopus:~/gsrc/linux-2.6$ git diff; git diff --cached > > > > ukl@octopus:~/gsrc/linux-2.6$ git checkout sgu/mxs-amba-uart > > warning: refname 'sgu/mxs-amba-uart' is ambiguous. > > Previous HEAD position was c13fb17... Merge commit '65e29a85a419f9a161ab0f09f9d69924e36d940e' into HEAD > > Switched to branch 'sgu/mxs-amba-uart' > > > > OK, it might be a bad idea to have this ambiguity, still ... > > [...] > > 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. > > 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? Why does that reasoning not apply to 'git checkout' too? At least without knowing the answer to that question, I think I would prefer to have checkout behave the same as the other commands do. Maybe a bit academic, but it seems like it would be nice if e.g. 'git checkout $anything && git show $anything' would show the HEAD commit and if 'git checkout $anything && git diff HEAD $anything' was always empty. Btw, what exactly does "generally" mean, i.e. which other commands don't favor tags? I know rebase is one example of a command that does not favor tags. Slightly off topic, but why does 'git rev-parse --symbolic-full-name' not output anything when the input is ambiguous? 'git rev-parse' without any flags favors tags, so I would have expected to get something like refs/tags/$name back. The reason I'm asking is because I just happened to see in the rebase code the other day that it will rebase a detached head if the <branch> parameter is not "completely unqualified". For example 'git rebase master heads/topic' or 'git rebase master refs/heads/topic' will not update refs/heads/topic. I was trying to fix that by using 'git rev-parse --symbolic-full-name' to parse <branch>. That seemed to work fine until I saw this thread :-). -- 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