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.