From: Junio C Hamano Date: Thu, 21 Dec 2006 07:47:42 GMT Subject: Re: [PATCH] Attempt to make git-checkout man page a bit more clear. Message-ID: <7vbqlx1yht.fsf@assigned-by-dhcp.cox.net> In-Reply-To: <20061221015350.245cc964.seanlkml@sympatico.ca> Sean writes: > diff --git a/Documentation/git-checkout.txt b/Documentation/git-checkout.txt > index fbdbadc..97c3afe 100644 > --- a/Documentation/git-checkout.txt > +++ b/Documentation/git-checkout.txt > @@ -8,23 +8,29 @@ git-checkout - Checkout and switch to a branch > SYNOPSIS > -------- > [verse] > +'git-checkout' [-f] [-m] > +'git-checkout' [-f] [-b [-l]] [-m] [] > 'git-checkout' [-m] [] ... > > DESCRIPTION > ----------- > ... > +With the third form, this command does *not* switch branches. > +Instead, it replaces the contents of the named paths in your > +working tree from the index. Here, the argument can be > used to specify a specific tree-ish to update the index for the > given paths before updating the working tree. The 'restore from arbitrary tree-ish' form does not take -m as far as I know. Although it might be interesting to do a single-file three-way merge, I do not think the command is _checkout_ anymore once it starts doing that. That is: $ git checkout -f master $ edit file.c $ git that-funny-command next file.c would steal the version of file.c from 'next', and merge the change your locally did on top of 'master', and put it in your working tree and in the index. Technically I can explain how that work (and how it could be implemented -- which is trivial), but I cannot explain what that operation _means_.