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.50.1 → 2.53.0 no changes
-
2.50.0
2025-06-16
- 2.45.1 → 2.49.1 no changes
-
2.45.0
2024-04-29
- 2.39.4 → 2.44.4 no changes
-
2.39.3
2023-04-17
- 2.38.1 → 2.39.2 no changes
-
2.38.0
2022-10-02
- 2.35.1 → 2.37.7 no changes
-
2.35.0
2022-01-24
- 2.30.1 → 2.34.8 no changes
-
2.30.0
2020-12-27
- 2.27.1 → 2.29.3 no changes
-
2.27.0
2020-06-01
- 2.23.1 → 2.26.3 no changes
-
2.23.0
2019-08-16
- 2.22.1 → 2.22.5 no changes
-
2.22.0
2019-06-07
- 2.21.1 → 2.21.4 no changes
-
2.21.0
2019-02-24
- 2.10.5 → 2.20.5 no changes
-
2.9.5
2017-07-30
- 2.8.6 no changes
-
2.7.6
2017-07-30
-
2.6.7
2017-05-05
- 2.4.12 → 2.5.6 no changes
-
2.3.10
2015-09-28
- 2.1.4 → 2.2.3 no changes
-
2.0.5
2014-12-17
SYNOPSIS
git cherry-pick [--edit] [-n] [-m <förälder-nummer>] [-s] [-x] [--ff]
[-S[<nyckelid>]] <incheckning>…
git cherry-pick (--continue | --skip | --abort | --quit)
BESKRIVNING
Givet en eller flera befintliga incheckningar, tillämpa ändringen som var och en introducerar och registrera en ny incheckning för varje. Detta kräver att ditt arbetsträd är rent (inga modifieringar från HEAD-incheckningen).
När det inte är uppenbart hur en ändring ska tillämpas, händer följande:
-
Den aktuella grenen och
HEAD-pekaren stannar vid den senast framgångsrikt genomförda incheckningen. -
Referensen
CHERRY_PICK_HEADär inställd att peka på den incheckning som introducerade ändringen som är svår att tillämpa. -
Sökvägar där ändringen tillämpades korrekt uppdateras både i indexfilen och i ditt arbetsträd.
-
För motstridiga sökvägar, registrerar indexfilen upp till tre versioner, enligt beskrivningen i avsnittet "SANN SAMMANSLAGNING" i git-merge[1]. Arbetskatalogs-filerna kommer att innehålla en beskrivning av konflikten inom av de vanliga konfliktmarkörerna <<<<<<< och >>>>>>>.
-
Inga andra ändringar görs.
Se git-merge[1] för några tips om hur man löser sådana konflikter.
ALTERNATIV
- <incheckning>…
-
Incheckningar som ska plockas som russin ur kakan. För en mer komplett lista över sätt att ange incheckningar, se gitrevisions[7]. Uppsättningar av incheckningar kan skickas men ingen genomgång görs som standard, som om alternativet
--no-walkhade angetts, se git-rev-list[1]. Observera att om man anger ett intervall matas alla <inchecknings>…-argument till en enda revisionsgenomgång (se ett senare exempel som använder maint master..next). - -e
- --edit
-
Med det här alternativet, låter git cherry-pick dig redigera incheckningsmeddelandet innan incheckningen.
- --cleanup=<läge>
-
Det här alternativet avgör hur incheckningsmeddelandet ska rensas innan det skickas vidare till incheckningsmaskineriet. Se git-commit[1] för mer information. Om <läge> ges värdet
scissorskommer scissors att läggas till iMERGE_MSGinnan det skickas vidare i händelse av en konflikt. - -x
-
När incheckningen registreras, lägg till en rad som säger "(cherry picked from commit …)" i det ursprungliga incheckningsmeddelandet för att ange från vilken incheckning denna ändring handplockades. Detta görs endast för handplockningar utan konflikter. Använd inte alternativet om du handplockar från en privat gren, eftersom informationen då är värdelös för mottagaren. Om du däremot handplockar mellan två offentligt synliga grenar (t.ex. bakporterar en fix till en underhållsgren för en äldre utgåva från en utvecklingsgren) kan denna information vara användbar.
- -r
-
Tidigare var det så att kommandot som standard gjorde
-xsom beskrivits ovan, och-rvar för att inaktivera det. Nu är standardinställningen att inte göra-xså detta är en verkningslös flagga. - -m <förälder-nummer>
- --mainline <förälder-nummer>
-
Vanligtvis kan du inte handplocka en sammanslagning eftersom det inte går att avgöra vilken sida av sammanslagningen som ska betraktas som huvudlinjen. Det här alternativet anger huvudlinjens föräldernummer (med början på 1) och låter handplockning återspela ändringen relativt den angivna föräldern.
- -n
- --no-commit
-
Vanligtvis skapar kommandot automatiskt en sekvens av incheckningar. Denna flagga tillämpar de ändringar som krävs för att välja ut varje namngiven incheckning till ditt arbetsträd och indexet, utan att göra någon incheckning. Dessutom, när detta alternativ används, behöver ditt index inte matcha HEAD-incheckningen. Urvalet görs mot starttillståndet för ditt index.
Det är användbart när du handplockar effekten av fler än en incheckning till indexet i följd.
- -s
- --signoff
-
Lägg till en
Signed-off-by-slutrad i slutet av incheckningsmeddelandet. Se signoff-alternativet i git-commit[1] för mer information. - -S[<nyckeld>]
- --gpg-sign[=<nyckelid>]
- --no-gpg-sign
-
GPG-signera incheckningar. Argumentet
nyckelidär valfritt och används som standard för incheckaridentiteten; om det anges måste det fästas vid alternativet utan mellanslag.--no-gpg-signär användbart för att åsidosätta både konfigurationsvariabelncommit.gpgSignoch tidigare--gpg-sign. - --ff
-
Om den aktuella HEAD är densamma som föräldern till den cherry-pick:ade incheckningen, kommer en snabbspolning till denna incheckning att utföras.
- --allow-empty
-
Som standard misslyckas handplockning av en tom incheckning, vilket innebär att ett uttryckligt anrop av
gitcommit--allow-emptykrävs. Det här alternativet åsidosätter det beteendet och gör att tomma incheckningar bevaras automatiskt vid handplockning. Observera att när "--ff" gäller behålls tomma incheckningar som uppfyller kravet för snabbspolning även utan detta alternativ. Observera också att alternativet endast behåller incheckningar som ursprungligen var tomma (d.v.s. incheckningen registrerade samma träd som sin förälder). Incheckningar som blir tomma på grund av en tidigare incheckning gör att handplockningen misslyckas. Använd--empty=keepför att tvinga med sådana incheckningar. - --allow-empty-message
-
Som standard misslyckas handplockning av en incheckning med tomt meddelande. Det här alternativet åsidosätter det beteendet och tillåter att incheckningar med tomma meddelanden handplockas.
- --empty=(drop|keep|stop)
-
Hur incheckningar som handplockas och är redundanta med ändringar som redan finns i den aktuella historiken ska hanteras.
Observera att
--empty=dropoch--empty=stopendast anger hur en incheckning som inte ursprungligen var tom, men blev tom på grund av en tidigare incheckning, ska hanteras. Incheckningar som ursprungligen var tomma gör fortfarande att handplockningen misslyckas om inte--empty=keepeller--allow-emptyanges. - --keep-redundant-commits
-
Föråldrad synonym för
--empty=keep. - --strategy=<strategi>
-
Använd den givna sammanslagningsstrategin. Bör endast användas en gång. Se avsnittet SAMMANSLAGNINGSSTRATEGIER i git-merge[1] för mer information.
- -X<flaggor>
- --strategy-option=<flaggor>
-
Skicka det merge-strategispecifika alternativet vidare till merge-strategin. Se git-merge[1] för mer information.
-
--rerere-autoupdate -
--no-rerere-autoupdate -
Efter att rerere-mekanismen återanvänder en inspelad lösning på den aktuella konflikten för att uppdatera filerna i arbetskatalogen, tillåt den även att uppdatera indexet med resultatet av lösningen.
--no-rerere-autoupdateär ett bra sätt att dubbelkolla vadrereregjorde och upptäcka potentiella felaktiga sammanslagningar, innan resultatet sparas i indexet med ett separatgitadd.
SEKVENSERARE UNDERKOMMANDON
- --continue
-
Fortsätt den pågående operationen med informationen i
.git/sequencer. Kan användas för att fortsätta efter att konflikter i en misslyckad cherry-picking eller ångring har lösts. - --skip
-
Hoppa över den nuvarande incheckningen och fortsätt med resten av sekvensen.
- --quit
-
Glöm den pågående operationen. Kan användas för att rensa sequencerns tillstånd efter en misslyckad cherry pick eller återställning.
- --abort
-
Avbryt åtgärden och återgå till försekvenstillståndet.
EXEMPEL
-
gitcherry-pickmaster -
Tillämpa ändringen som introducerades av incheckningen i toppen på master-grenen och skapa en ny incheckning med denna ändring.
-
gitcherry-pick..master -
gitcherry-pick^HEADmaster -
Tillämpa ändringarna som introducerats av alla incheckningar som är föregångare till master men inte till HEAD för att skapa nya incheckningar.
-
gitcherry-pickmaintnext^master -
gitcherry-pickmaintmaster..next -
Tillämpa ändringarna som introduceras av alla incheckningar som är föregångare till maint eller next, men inte master eller någon av dess föregångare. Observera att det senare inte betyder
maintoch allt mellanmasterochnext; specifikt kommermaintinte att användas om det ingår imaster. -
gitcherry-pickmaster~4master~2 -
Tillämpa ändringarna som introducerades av den femte och tredje sista incheckningarna som master pekar på och skapa 2 nya incheckningar med dessa ändringar.
-
gitcherry-pick-nmaster~1next -
Tillämpa på arbetsträdet och indexet de ändringar som introducerades av den näst sista incheckningen som pekas ut av master och av den sista incheckningen som pekas ut av next, men skapa ingen incheckning med dessa ändringar.
-
gitcherry-pick--ff..next -
Om historiken är linjär och HEAD är en förfader till next, uppdatera arbetsträdet och flytta HEAD-pekaren så att den matchar next. Annars tillämpar du ändringarna som introducerats av de incheckningar som finns i next men inte HEAD på den aktuella grenen, och skapar en ny incheckning för varje ny ändring.
-
gitrev-list--reversemaster--README|gitcherry-pick-n--stdin -
Tillämpa ändringarna som introducerats av alla incheckningar på huvudgrenen som berörde README på arbetsträdet och indexet, så att resultatet kan inspekteras och göras om till en enda ny incheckning om det är lämpligt.
Följande sekvens försöker bakporterar en patch, stannar eftersom koden som patchen gäller för har ändrats för mycket, och försöker sedan igen, den här gången med större noggrannhet i att matcha kontextrader.
$ git cherry-pick topic^ (1) $ git diff (2) $ git cherry-pick --abort (3) $ git cherry-pick -Xpatience topic^ (4)
-
tillämpa ändringen som skulle visas av
gitshowtopic^. I det här exemplet, tillämpas inte patchen korrekt, så information om konflikten skrivs till indexet och arbetsträdet och ingen nya incheckning-resultat uppstår. -
sammanfatta ändringar som ska försonas
-
avbryt urvalet. Med andra ord, återgå till tillståndet före russinen plockades ur kakan och behåll alla lokala ändringar du hade i arbetsträdet.
-
försök att tillämpa ändringen som introducerades av
topic^igen, och lägg extra tid på att undvika misstag baserade på felaktigt matchande kontextrader.
GIT
En del av git[1]-sviten