On 5/9/07, Junio C Hamano <junkio@xxxxxxx> wrote:
"Lars Hjemli" <hjemli@xxxxxxxxx> writes: > On 5/9/07, Junio C Hamano <junkio@xxxxxxx> wrote: >> Lars Hjemli <hjemli@xxxxxxxxx> writes: >> >> > This teaches git-checkout to strip the prefix 'refs/heads/' from the >> > supplied <branch> argument >> >> Why is this necessary, may I ask? >> > > I'm playing around with a gui frontend, and there I use > git-for-each-ref to obtain possible arguments for git-checkout. That's > how I discovered the 'problem', and solved it by stripping > 'refs/heads/' in my frontend. Pathspec-less variant of "git checkout" takes two kinds of parameters and has two flavours in its behaviour: (1) an exact branch name, in which case it switches to the branch; otherwise (2) any arbitrary commit object name, in whch case it checks out and detaches HEAD. A tricky part is that an exact branch name is often a perfectly valid commit object name, so rule (1) trumps the rule (2). You just discovered a way to have a detached HEAD at a commit that happens to be at an existing branch -- by naming that commit without using its exact branch name.
Ok. But if this is intended behaviour, maybe we would want do change the detach-message in this case: [~/src/git] next$ git checkout refs/heads/master Note: moving to "refs/heads/master" which isn't a local branch (sorry for stealing your time with this unimportant stuff, it just surprised me that refs/heads/$branch wasn't treated as a local branch name) -- larsh - 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