Re: [PATCH 7/8] Documentation/cherry-pick: describe passing more than one commit

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]