Christian Couder wrote: > --- a/Documentation/git-cherry-pick.txt > +++ b/Documentation/git-cherry-pick.txt > @@ -3,24 +3,29 @@ git-cherry-pick(1) > > NAME > ---- > -git-cherry-pick - Apply the change introduced by an existing commit > +git-cherry-pick - Apply the change introduced by some existing commits Maybe s/change/changes/. > DESCRIPTION > ----------- > -Given one existing commit, apply the change the patch introduces, and record a > -new commit that records it. This requires your working tree to be clean (no > -modifications from the HEAD commit). > + > +Given one or more existing commits, apply the changes that the related > +patches introduce, and record some new commits that record them. This > +requires your working tree to be clean (no modifications from the HEAD > +commit). "Related" made me think "related how"? "Record some new commits" sounds oddly vague. Maybe: Given one or more existing commits, apply the change each one introduces, recording a new commit for each. This requires your working tree to be clean (no modifications from the HEAD commit). > OPTIONS > ------- > -<commit>:: > - Commit to cherry-pick. > +<commit>...:: > + Commits to cherry-pick. > For a more complete list of ways to spell commits, see the > "SPECIFYING REVISIONS" section in linkgit:git-rev-parse[1]. > + Sets of commits can also be given but no traversal is done > + by default, see linkgit:git-rev-list[1] and its '--no-walk' > + option. --no-walk can be a bit confusing. I think we should try to avoid relying on the reader understanding it. <commit>...:: Commits to cherry-pick. For a more complete list of ways to spell commits, see the "SPECIFYING REVISIONS" section in linkgit:git-rev-parse[1]. Revision ranges are interpreted as though specified with the `--no-walk` option; see the "Examples" section below. > -e:: > --edit:: > @@ -55,13 +60,12 @@ OPTIONS > > -n:: > --no-commit:: > - Usually the command automatically creates a commit. > - This flag applies the change necessary to cherry-pick > - the named commit to your working tree and the index, > - but does not make the commit. In addition, when this > - option is used, your index does not have to match the > - HEAD commit. The cherry-pick is done against the > - beginning state of your index. > + Usually the command automatically creates some commits. This > + flag applies the change necessary to cherry-pick the named > + commits to your working tree and the index, but does not make > + the commits. In addition, when this option is used, your > + index does not have to match the HEAD commit. The cherry-pick > + is done against the beginning state of your index. This switches between singular and plural. -n:: --no-commit:: Usually 'git cherry-pick' automatically creates a sequence of commits. This option can be used to apply the changes necessary to cherry-pick each named commit to your working tree and index without making any commits. In addition, when this option is used, your index does not have to match the HEAD commit: the cherry-pick is done against the beginning state of the index. > + > This is useful when cherry-picking more than one commits' > effect to your index in a row. This is useful for cherry-picking multiple commits to produce a single new commit. > @@ -75,6 +79,38 @@ effect to your index in a row. > cherry-pick'ed commit, then a fast forward to this commit will > be performed. > > +Examples > +-------- These are a little repetitive. > +git cherry-pick master:: > + > + Apply the changes specified by the commit pointed to by master > + and create a new commit with these changes. git cherry-pick master:: Apply the change introduced by the commit at the tip of the master branch and create a new commit. > + > +git cherry-pick master~3..master:: > +git cherry-pick ^master~3 master:: > + > + Apply the changes specified by the last 3 commits pointed to > + by master and create 3 new commits with these changes. git cherry-pick ..master:: git cherry-pick ^HEAD master:: Apply the changes introduced by all commits that are ancestors of master but not HEAD to produce new commits on the current branch. > +git cherry-pick master\~3 master~2:: > + > + Apply the changes specified by the fourth and third last > + commits pointed to by master and create 2 new commits with > + these changes. git cherry-pick master~5 master~2:: Apply the changes introduced by the fifth- and second-generation grandparents of master to HEAD as new commits. > + > +git cherry-pick -n master~1 next:: > + > + Apply to the working tree and the index the changes specified > + by the second last commit pointed to by master and by the last > + commit pointed to by next, but do not create any commit with > + these changes. git rev-list master -- README | git cherry-pick -n --stdin:: Apply the changes introduced by all commits on the master branch that touched README to the working tree and index, so the result can be inspected and made into a single new commit if suitable. > + > +git cherry-pick --ff ..next:: > + > + If possible fast forward to the existing commits already in > + next but not in HEAD, otherwise apply the changes specified by > + these commits and create new commits with these changes. git cherry-pick --ff ..next:: If history is linear and HEAD is an ancestor of next, update the working tree and advance the HEAD pointer to match next. Otherwise, apply the changes introduced by those commits that are in next but not HEAD to the current branch, creating a new commit for each new change. (This is not precisely right, since it doesn’t describe the behavior in some cases of nonlinear history: . --- . --- . --- . ---. next / / . HEAD .---. In this case, assuming time flows left-to-right, the HEAD would fast-forward three commits, then cherry-pick the other three. Not sure how to word this nicely.) Hope that helps, Jonathan -- 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