1GIT-CHERRY(1)                     Git Manual                     GIT-CHERRY(1)
2
3
4

NAME

6       git-cherry - Find commits yet to be applied to upstream
7

SYNOPSIS

9       git cherry [-v] [<upstream> [<head> [<limit>]]]
10
11

DESCRIPTION

13       Determine whether there are commits in <head>..<upstream> that are
14       equivalent to those in the range <limit>..<head>.
15
16       The equivalence test is based on the diff, after removing whitespace
17       and line numbers. git-cherry therefore detects when commits have been
18       "copied" by means of git-cherry-pick(1), git-am(1) or git-rebase(1).
19
20       Outputs the SHA1 of every commit in <limit>..<head>, prefixed with -
21       for commits that have an equivalent in <upstream>, and + for commits
22       that do not.
23

OPTIONS

25       -v
26           Show the commit subjects next to the SHA1s.
27
28       <upstream>
29           Upstream branch to search for equivalent commits. Defaults to the
30           upstream branch of HEAD.
31
32       <head>
33           Working branch; defaults to HEAD.
34
35       <limit>
36           Do not report commits up to (and including) limit.
37

EXAMPLES

39   Patch workflows
40       git-cherry is frequently used in patch-based workflows (see
41       gitworkflows(7)) to determine if a series of patches has been applied
42       by the upstream maintainer. In such a workflow you might create and
43       send a topic branch like this:
44
45           $ git checkout -b topic origin/master
46           # work and create some commits
47           $ git format-patch origin/master
48           $ git send-email ... 00*
49
50
51       Later, you can see whether your changes have been applied by saying
52       (still on topic):
53
54           $ git fetch  # update your notion of origin/master
55           $ git cherry -v
56
57
58   Concrete example
59       In a situation where topic consisted of three commits, and the
60       maintainer applied two of them, the situation might look like:
61
62           $ git log --graph --oneline --decorate --boundary origin/master...topic
63           * 7654321 (origin/master) upstream tip commit
64           [... snip some other commits ...]
65           * cccc111 cherry-pick of C
66           * aaaa111 cherry-pick of A
67           [... snip a lot more that has happened ...]
68           | * cccc000 (topic) commit C
69           | * bbbb000 commit B
70           | * aaaa000 commit A
71           |/
72           o 1234567 branch point
73
74
75       In such cases, git-cherry shows a concise summary of what has yet to be
76       applied:
77
78           $ git cherry origin/master topic
79           - cccc000... commit C
80           + bbbb000... commit B
81           - aaaa000... commit A
82
83
84       Here, we see that the commits A and C (marked with -) can be dropped
85       from your topic branch when you rebase it on top of origin/master,
86       while the commit B (marked with +) still needs to be kept so that it
87       will be sent to be applied to origin/master.
88
89   Using a limit
90       The optional <limit> is useful in cases where your topic is based on
91       other work that is not in upstream. Expanding on the previous example,
92       this might look like:
93
94           $ git log --graph --oneline --decorate --boundary origin/master...topic
95           * 7654321 (origin/master) upstream tip commit
96           [... snip some other commits ...]
97           * cccc111 cherry-pick of C
98           * aaaa111 cherry-pick of A
99           [... snip a lot more that has happened ...]
100           | * cccc000 (topic) commit C
101           | * bbbb000 commit B
102           | * aaaa000 commit A
103           | * 0000fff (base) unpublished stuff F
104           [... snip ...]
105           | * 0000aaa unpublished stuff A
106           |/
107           o 1234567 merge-base between upstream and topic
108
109
110       By specifying base as the limit, you can avoid listing commits between
111       base and topic:
112
113           $ git cherry origin/master topic base
114           - cccc000... commit C
115           + bbbb000... commit B
116           - aaaa000... commit A
117
118

SEE ALSO

120       git-patch-id(1)
121

GIT

123       Part of the git(1) suite
124
125
126
127Git 2.24.1                        12/10/2019                     GIT-CHERRY(1)
Impressum