Git
Zbieranie wiśni
Szukaj…
Wprowadzenie
Wiśniowy wybór pobiera łatkę, która została wprowadzona w zatwierdzeniu i próbuje ponownie zastosować ją w gałęzi, w której aktualnie się znajdujesz.
Składnia
- git cherry-pick [--edit] [-n] [-m numer nadrzędny] [-s] [-x] [--ff] [-S [identyfikator klucza]] commit ...
- git cherry-pick - kontynuuj
- git cherry-pick - quit
- git cherry-pick - abort
Parametry
Parametry | Detale |
---|---|
-e, --edit | Dzięki tej opcji, git cherry-pick pozwoli ci edytować komunikat zatwierdzenia przed zatwierdzeniem. |
-x | Podczas rejestrowania zatwierdzenia dodaj wiersz z napisem „(Cherry picked from commit…)” do pierwotnego komunikatu zatwierdzenia, aby wskazać, z którego zatwierdzenia wybrano tę zmianę. Odbywa się to tylko dla wyborów wiśniowych bez konfliktów. |
--ff | Jeśli bieżący HEAD jest taki sam, jak element nadrzędny zatwierdzonego wyboru cherry, zostanie wykonane szybkie przewijanie do przodu do tego zatwierdzenia. |
--kontyntynuj | Kontynuuj trwającą operację, korzystając z informacji w .git / sequencer. Można go używać do kontynuowania po rozwiązaniu konfliktów w przypadku nieudanego wyboru lub cofnięcia. |
--porzucić | Zapomnij o trwającej operacji. Można go użyć do wyczyszczenia stanu sekwencera po nieudanej operacji wybierania lub przywracania. |
--anulować | Anuluj operację i powróć do stanu sprzed sekwencji. |
Kopiowanie zatwierdzenia z jednej gałęzi do drugiej
git cherry-pick <commit-hash>
zastosuje zmiany dokonane w istniejącym zatwierdzeniu do innej gałęzi, podczas nagrywania nowego zatwierdzenia. Zasadniczo możesz kopiować zatwierdzenia z oddziału do oddziału.
Biorąc pod uwagę następujące drzewo (Źródło)
dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 [master]
\
76cada - 62ecb3 - b886a0 [feature]
Powiedzmy, że chcemy skopiować b886a0
do master (na górze 5a6057
).
Możemy biegać
git checkout master
git cherry-pick b886a0
Teraz nasze drzewo będzie wyglądać mniej więcej tak:
dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 - a66b23 [master]
\
76cada - 62ecb3 - b886a0 [feature]
Gdzie nowy zatwierdzenie a66b23
ma tę samą treść (diff źródłowy, komunikat zatwierdzenia) co b886a0
(ale inny rodzic). Zauważ, że wybieranie- b886a0
tylko zmiany w tym zatwierdzeniu (w tym przypadku b886a0
), nie wszystkie zmiany w gałęzi funkcji (w tym celu będziesz musiał użyć zmiany lub połączenia).
Kopiowanie zakresu zatwierdzeń z jednej gałęzi do drugiej
git cherry-pick <commit-A>..<commit-B>
umieści każde zatwierdzenie po A i do B włącznie włącznie na aktualnie wyewidencjonowanym oddziale.
git cherry-pick <commit-A>^..<commit-B>
umieści zatwierdzenie A i każde zatwierdzenie do B włącznie z aktualnie wyewidencjonowanym odgałęzieniem.
Sprawdzanie, czy wymagany jest czereśniowy kilof
Przed rozpoczęciem procesu wybierania wiśniowego możesz sprawdzić, czy zatwierdzenie, które chcesz wybrać, już istnieje w gałęzi docelowej, w którym to przypadku nie musisz nic robić.
git branch --contains <commit>
wyświetla lokalne gałęzie, które zawierają określone zatwierdzenie.
git branch -r --contains <commit>
zawiera również zdalne gałęzie śledzenia na liście.
Znajdź zobowiązania, które mają być zastosowane w górę
Polecenie git cherry
pokazuje zmiany, które nie zostały jeszcze wybrane.
Przykład:
git checkout master
git cherry development
... i zobacz wyjście trochę tak:
+ 492508acab7b454eee8b805f8ba906056eede0ff
- 5ceb5a9077ddb9e78b1e8f24bfc70e674c627949
+ b4459544c000f4d51d1ec23f279d9cdb19c1d32b
+ b6ce3b78e938644a293b2dd2a15b2fecb1b54cd9
Zobowiązania, które są przy +
będą tymi, które nie zostały jeszcze wybrane do development
.
Składnia:
git cherry [-v] [<upstream> [<head> [<limit>]]]
Opcje:
-v Pokaż podmioty zatwierdzające obok SHA1.
<upstream> Upstream oddział, aby wyszukać równoważne zatwierdzenia. Domyślnie gałąź upstream HEAD.
<głowa> Działająca gałąź; domyślnie HEAD.
<limit> Nie zgłaszaj zatwierdzeń do (włącznie) limitu.
Sprawdź dokumentację git-cherry, aby uzyskać więcej informacji.