Git Cherry-pick
Ostatnia aktualizacja
git cherry-pick kopiuje zmiany z jednego lub kilku konkretnych commitów i nakłada je na bieżącą gałąź jako nowe commity. W ten sposób bierzesz pojedynczą poprawkę z innej gałęzi bez scalania całej gałęzi. Przydaje się przy przenoszeniu hotfixa do starszej wersji albo wyciąganiu jednego commita z gałęzi funkcji.
Wypróbuj te polecenia w terminalu online: prawdziwa powłoka w przeglądarce, bez żadnej instalacji.
Składnia
| Polecenie | Co robi |
|---|---|
git cherry-pick <hash> | Nakłada jeden commit na bieżącą gałąź |
git cherry-pick <a> <b> | Nakłada kilka commitów po kolei |
git cherry-pick <a>..<b> | Nakłada zakres commitów (bez a) |
git cherry-pick -n <hash> | Nakłada zmiany, ale jeszcze nie tworzy commita |
git cherry-pick -x <hash> | Dopisuje oryginalny commit do wiadomości |
W trakcie cherry-pick
Jeśli cherry-pick trafi na konflikt, rozwiąż go i kontynuuj.
| Polecenie | Co robi |
|---|---|
git cherry-pick --continue | Wznawia po rozwiązaniu konfliktów |
git cherry-pick --abort | Anuluje i przywraca gałąź |
git cherry-pick --skip | Pomija bieżący commit |
Przykład krok po kroku
| Krok | Polecenie | Wynik |
|---|---|---|
| 1 | git log --oneline hotfix | Znajdź hash poprawki, na przykład a1b2c3d |
| 2 | git switch main | Przejdź na gałąź, która ma dostać poprawkę |
| 3 | git cherry-pick a1b2c3d | Nakłada poprawkę na main jako nowy commit z nowym hashem |
Najczęstsze pytania o git cherry-pick
Co robi git cherry-pick?
Kiedy używać cherry-pick?
main na gałąź wydania albo wyciąganiu jednego przydatnego commita z gałęzi funkcji bez scalania wszystkiego. Jeśli chcesz całą gałąź, użyj merge albo rebase.Jak zrobić cherry-pick kilku commitów?
git cherry-pick <a> <b> <c> nakłada każdy po kolei. Dla ciągłego zakresu użyj git cherry-pick <start>..<end>, które nakłada każdy commit po start aż do end włącznie. Napisz <start>^..<end>, jeśli chcesz uwzględnić także sam start.Co zrobić, gdy cherry-pick powoduje konflikt?
git add, a potem uruchom git cherry-pick --continue. Żeby wycofać się całkowicie, użyj git cherry-pick --abort, które przywraca gałąź do stanu sprzed rozpoczęcia cherry-pick.Jak zrobić cherry-pick commita z innej gałęzi?
git log --oneline <other-branch>, przełącz się na gałąź, która ma go otrzymać, i uruchom git cherry-pick <hash>. Możesz też podać nazwę gałęzi, np. git cherry-pick feature, co bierze commit z końca tej gałęzi.Czym różni się cherry-pick od merge?
Czy mogę to przećwiczyć online?
git cherry-pick w prawdziwej powłoce w przeglądarce, bez żadnej instalacji. Darmowy interaktywny kurs Git w Coddy też krok po kroku omawia przenoszenie commitów między gałęziami.