Git
Körsbärsplockning
Sök…
Introduktion
En cherry-pick tar plåstret som introducerades i ett engagemang och försöker applicera det igen på den gren du för närvarande är på.
Syntax
- git cherry-pick [--edit] [-n] [-m parent-number] [-s] [-x] [--ff] [-S [key-id]] commit ...
- git cherry-pick - fortsätt
- git cherry-pick - quit
- git cherry-pick - abort
parametrar
parametrar | detaljer |
---|---|
-e, - redigera | Med det här alternativet låter git cherry-pick dig redigera engagemanget innan du begår. |
-x | När du registrerar engagemanget ska du lägga till en rad som säger "(körsbär plockat från åtagande ...)" till det ursprungliga åtagandemeddelandet för att ange vilket åtagande som denna förändring har valts från körsbär. Detta görs endast för körsbärspinnar utan konflikter. |
--ff | Om den nuvarande HEAD är densamma som föräldern till den cherry-pick'ed commit, kommer en snabbspolning framåt till denna commit att utföras. |
--Fortsätta | Fortsätt den pågående operationen med informationen i .git / sequencer. Kan användas för att fortsätta efter att ha löst konflikter i en misslyckad körsbärsplockning eller återgå. |
--sluta | Glöm den aktuella åtgärden som pågår. Kan användas för att rensa sequenser-tillståndet efter en misslyckad körsbärsplockning eller återgång. |
--avbryta | Avbryt åtgärden och återgå till pre-sekvensläget. |
Kopiering av en åtagande från en gren till en annan
git cherry-pick <commit-hash>
kommer att tillämpa ändringarna som gjorts i en befintlig åtagande på en annan gren, medan en ny åtagande registreras. I huvudsak kan du kopiera åtaganden från filial till filial.
Följande träd (källa)
dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 [master]
\
76cada - 62ecb3 - b886a0 [feature]
Låt oss säga att vi vill kopiera b886a0
till master (ovanpå 5a6057
).
Vi kan springa
git checkout master
git cherry-pick b886a0
Nu kommer vårt träd att se ut som:
dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 - a66b23 [master]
\
76cada - 62ecb3 - b886a0 [feature]
Där den nya commit a66b23
har samma innehåll (källdiff, engagemang) som b886a0
(men en annan överordnad). Observera att körsbärsplockning bara tar upp ändringar på det åtagandet ( b886a0
i detta fall) inte alla förändringar i funktionsgren (för detta måste du antingen använda omfasning eller sammanslagning).
Kopiering av ett antal åtaganden från en gren till en annan
git cherry-pick <commit-A>..<commit-B>
kommer att placera varje engagemang efter A och till och med B ovanpå den för närvarande utcheckade grenen.
git cherry-pick <commit-A>^..<commit-B>
kommer att placera engagemang A och alla åtaganden till och med B ovanpå den nuvarande utcheckade grenen.
Kontrollera om en körsbärsplockning krävs
Innan du startar cherry-pick-processen kan du kontrollera om det åtagande du vill ha cherry-pick redan finns i målgrenen, i vilket fall du inte behöver göra någonting.
git branch --contains <commit>
listar lokala grenar som innehåller det angivna engagemanget.
git branch -r --contains <commit>
innehåller också fjärrspårningsgrenar i listan.
Hitta åtaganden som ännu inte ska tillämpas på uppströms
Kommando git cherry
visar ändringarna som ännu inte har valts med körsbär.
Exempel:
git checkout master
git cherry development
... och se output lite så här:
+ 492508acab7b454eee8b805f8ba906056eede0ff
- 5ceb5a9077ddb9e78b1e8f24bfc70e674c627949
+ b4459544c000f4d51d1ec23f279d9cdb19c1d32b
+ b6ce3b78e938644a293b2dd2a15b2fecb1b54cd9
Åtagandet att vara med +
kommer att vara de som ännu inte har plockat körsbär i development
.
Syntax:
git cherry [-v] [<upstream> [<head> [<limit>]]]
Alternativ:
-v Visa åtagandeämnen bredvid SHA1s.
<uppströms> Uppströmsgren för att söka efter motsvarande åtaganden. Standardvärdet till HEAD: s uppströmsgren.
<head> Arbetande gren; som standard är HEAD.
<limit> Rapportera inte åtaganden upp till (och inklusive) gräns.
Kontrollera git-cherry-dokumentationen för mer information.