Re: DWIM "git checkout frotz" to "git checkout -b frotz origin/frotz"
- From
Matthieu Moy <matthieu.moy@grenoble-inp.fr>
- Date
- Jun 6, 2010, 16:18 UTC
- Message-ID
- <vpqljas5e33.fsf@bauges.imag.fr>
- In-Reply-To
- <20100605110930.GA10526@localhost>
Clemens Buchacher <drizzd@aon.at> writes:
Show 14 quoted lines
> Hi, > > Peter and I just stumbled on the following interpretations of the > checkout command. > > git checkout origin/frotz -> detaches HEAD > git checkout -t origin/frotz -> git checkout -b frotz origin/frotz > git checkout frotz -> git checkout -b frotz origin/frotz > git checkout -t frotz -> fatal: Missing branch name > > I was surprised by the third one, which I was expecting to fail. > Apparently it's a DWIM feature introduced in commit 70c9ac2f. I > doubt that is what the user was trying to do if they ran that > command. If anything, this behavior will serve to confuse them.
As already mentionned, it's obviously a bit late to revert the commit which itroduced this DWIM. I tend to agree that this is confusing, but still, this is very often what the user actually wanted. The original patch was to sugest the user the appropriate command, and I find the motivating example rather convincing:
http://thread.gmane.org/gmane.comp.version-control.git/129587
$ git clone git://git.kernel.org/pub/scm/git/git.git $ cd git $ git checkout next error: pathspec 'next' did not match any file(s) known to git. To create a local branch from the same named remote branch, use git checkout -b next origin/next
The newbie does not immediately understand the difference between local and remote branches, he's been told about the branch "next", and wants to check it out.
-- Matthieu Moy http://www-verimag.imag.fr/~moy/