SYNOPSIS

git cherry [-v] [<upstream> [<head> [<limit>]]]

DESCRIPTION

<head>..<upstream><limit>..<head> の範囲と同等のコミットがあるかどうかを検査(determine)します。

等価性テストは、空白と行番号を削除した後のdiffに基づいています。したがって、git-cherry は、 git-cherry-pick(1) または git-am(1) または git-rebase(1) を使用してコミットが「コピー」された時に検出します。

<limit>..<head> の範囲のすべてのコミットのSHA1を出力し、 <upstream> に同等のものがあるコミットの場合は - を接頭辞として付け、そうでないコミットの場合は + を接頭辞として付けます。

OPTIONS

-v

SHA1の横にコミット件名(commit subject)を表示します。

<upstream>

同等のコミットを検索するためのアップストリームブランチ。デフォルトはHEADのアップストリームブランチです。

<head>

作業ブランチ。デフォルトはHEADです。

<limit>

コミットをlimitまで(limitを含む)報告しないでください。

EXAMPLES

Patch workflows

git-cherryは、パッチベースのワークフロー(gitworkflows(7) 参照)で頻繁に使用され、一連のパッチがアップストリームメンテナによって適用されているかどうかを判断します。このようなワークフローでは、以下のようなトピックブランチを作成して送信できます:

$ git checkout -b topic origin/master
# work and create some commits
$ git format-patch origin/master
$ git send-email ... 00*

後で、あなたは(まだ topic に居る時に、)次のように言うことで、変更が適用されたかどうかを確認できます:

$ git fetch  # update your notion of origin/master
$ git cherry -v

Concrete example

トピックが3つのコミットで構成され、メンテナがそのうちの2つを適用した状況では、状況は以下のようになります:

$ git log --graph --oneline --decorate --boundary origin/master...topic
* 7654321 (origin/master) upstream tip commit
[... snip some other commits ...]
* cccc111 cherry-pick of C
* aaaa111 cherry-pick of A
[... snip a lot more that has happened ...]
| * cccc000 (topic) commit C
| * bbbb000 commit B
| * aaaa000 commit A
|/
o 1234567 branch point

このような場合、git-cherryはまだ適用されていないモノの簡潔な要約を示します:

$ git cherry origin/master topic
- cccc000... commit C
+ bbbb000... commit B
- aaaa000... commit A

ここで、(- でマークされている)コミットAとCは、 origin/master のトップでリベースすると、トピックブランチから削除できますが、(+ でマークされている)コミットBは origin/master にapplyするために送信されるために、まだ保持しつづける必要があります。

Using a limit

オプションの <limit> は、あなたのトピックがアップストリームにない他の作業に基づいている場合に役立ちます。前の例を拡張すると、これは以下のようになります:

$ git log --graph --oneline --decorate --boundary origin/master...topic
* 7654321 (origin/master) upstream tip commit
[... snip some other commits ...]
* cccc111 cherry-pick of C
* aaaa111 cherry-pick of A
[... snip a lot more that has happened ...]
| * cccc000 (topic) commit C
| * bbbb000 commit B
| * aaaa000 commit A
| * 0000fff (base) unpublished stuff F
[... snip ...]
| * 0000aaa unpublished stuff A
|/
o 1234567 merge-base between upstream and topic

制限として base を指定することで、 basetopic の間のコミットをリストすることを回避できます:

$ git cherry origin/master topic base
- cccc000... commit C
+ bbbb000... commit B
- aaaa000... commit A

SEE ALSO

GIT

Part of the git(1) suite