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
を指定することで、 base
と topic
の間のコミットをリストすることを回避できます:
$ git cherry origin/master topic base
- cccc000... commit C
+ bbbb000... commit B
- aaaa000... commit A
SEE ALSO
GIT
Part of the git(1) suite