Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.1.4 → 2.53.0 no changes
-
2.0.5
2014-12-17
BESKRIVNING
Avgör om det finns incheckningar i <huvud>..<uppström> som är likvärdiga med de i intervallet <gräns>..<huvud>.
Ekvivalenstestet baseras på diff-koden, efter att blanktecken och radnummer har tagits bort. git-cherry detekterar därför när incheckningar har "kopierats" med hjälp av git-cherry-pick[1], git-am[1] eller git-rebase[1].
Matar ut SHA1 för varje incheckning i <gräns>..<huvud>, prefixet med - för incheckningar som har en motsvarighet i <uppström>, och + för incheckningar som inte har det.
EXEMPEL
Patch-arbetsflöden
git-cherry is frequently used in patch-based workflows (see gitworkflows[7]) to determine if a series of patches has been applied by the upstream maintainer. In such a workflow you might create and send a topic branch like this:
$ git checkout -b ämne origin/master # arbeta och skapa några incheckningar $ git format-patch origin/master $ git send-email ... 00*
Senare, kan du se om dina ändringar har tillämpats genom att säga (fortfarande på ämne):
$ git fetch # uppdatera din uppfattning om origin/master $ git cherry -v
Konkret exempel
I en situation där ämnet bestod av tre incheckningar, och underhålls-ansvarige tillämpade två av dem, kan situationen se ut så här:
$ git log --graph --oneline --decorate --boundary origin/master...ämne * 7654321 (origin/master) uppströms top incheckning [... klipp ut några andra incheckninger ...] * cccc111 cherry-pick of C * aaaa111 cherry-pick of A [... klipp ut mycket mer som har hänt ...] | * cccc000 (ämne) incheckning C | * bbbb000 incheckning B | * aaaa000 incheckning A |/ o 1234567 förgreningspunkt
I sådana fall, visar git-cherry en kortfattad sammanfattning av vad som ännu inte har tillämpats:
$ git cherry origin/master ämne - cccc000... commit C + bbbb000... commit B - aaaa000... commit A
Här ser vi att incheckning A och C (markerade med -) kan tas bort från din ämnes-gren när du ombaserar den ovanpå origin/master, medan incheckning B (markerad med +) fortfarande behöver behållas så att den skickas för att tillämpas på origin/master.
Använda en gräns
Det valfria alternativet <gräns> är användbart i de fall där ditt ämne är baserat på annat arbete som inte finns i uppströms. Om vi utvidgar föregående exempel, kan detta se ut så här:
$ git log --graph --oneline --decorate --boundary origin/master...ämne * 7654321 (origin/master) uppströms top incheckning [... klipp ut några andra incheckningar ...] * cccc111 cherry-pick of C * aaaa111 cherry-pick of A [... klipp ut mycket mer som har hänt ...] | * cccc000 (ämne) incheckning C | * bbbb000 incheckning B | * aaaa000 incheckning A | * 0000fff (base) opublicerade saker F [... snip ...] | * 0000aaa opublicerade saker A |/ o 1234567 sammanslagningsbas mellan uppströms och ämne
Genom att ange bas som gräns kan du undvika att lista incheckningar mellan bas och ämne:
$ git cherry origin/master ämne bas - cccc000... commit C + bbbb000... commit B - aaaa000... commit A
GIT
En del av git[1]-sviten