Re: [1.8.0] Summary of the discussions
- From
Martin von Zweigbergk <martin.von.zweigbergk@gmail.com>
- Date
- Feb 18, 2011, 02:08 UTC
- Message-ID
- <alpine.DEB.2.00.1102172033340.14950@debian>
- In-Reply-To
- <7vwrky5f48.fsf@alter.siamese.dyndns.org>
On Thu, 17 Feb 2011, Junio C Hamano wrote:
Show 10 quoted lines
> * "git checkout refs/heads/<name>" checks out <name> branch. > > From: Martin von Zweigbergk <martin.von.zweigbergk@gmail.com> > Date: Mon, 7 Feb 2011 06:01:51 -0500 (EST) > Message-ID: <alpine.DEB.1.10.1102062234010.3788@debian> > > -- summary -- > > In addition to "git checkout <name>" that names an existing branch, > special case "git checkout refs/heads/<name>" to check the branch out,
At first I was going to say that I don't think special casing it should be necessary. It seemed like as long as the name resolves to something like refs/heads/<name>, the branch should be checked out. Then I think I realized why you said to special case it. Since checkout favors branches to tags, we would first have to check if refs/heads/<arg> is valid and if it is not, check if the argument resolves to refs/heads/<name> (maybe ignoring tags called "heads/<name>").
Show 17 quoted lines
> instead of detaching HEAD at the tip of the branch. If you want to > detach at a specific commit and wanted to disambiguate <name> that is > both a branch and another ref by checking out refs/heads/<name>, your > workflow will be broken by this change, but you can still say > refs/heads/<name>^0 to work it around. > > -- comments -- > > I do not think this backward incompatible breakage would seriously > hurt in practice, and if people see newbies are hurt by getting a > detached HEAD when they check out refs/heads/<name>, this proposal > might be an improvement, but I have a feeling that this may be trying > to solve a wrong problem. > > Why are these people _tempted_ to type refs/heads/ explicitly? It > could be our tutorial or documentation. That might be the thing to > fix.
It wasn't until recently that I learned that "git checkout [refs/]heads/<name>" (and rebase <upstream> [refs/]heads/name) detaches the head, so it wasn't really to try to help newbies that I proposed changing it. It was just that the current behavior is not what I think most people would expect.
/Martin