Menu
Coddy logo textTech

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.

git cherry-pick kopiuje jeden wybrany commit z innej gałęzi i nakłada go na bieżącą gałąź.

Składnia

PolecenieCo 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.

PolecenieCo robi
git cherry-pick --continueWznawia po rozwiązaniu konfliktów
git cherry-pick --abortAnuluje i przywraca gałąź
git cherry-pick --skipPomija bieżący commit

Przykład krok po kroku

KrokPolecenieWynik
1git log --oneline hotfixZnajdź hash poprawki, na przykład a1b2c3d
2git switch mainPrzejdź na gałąź, która ma dostać poprawkę
3git cherry-pick a1b2c3dNakłada poprawkę na main jako nowy commit z nowym hashem

Najczęstsze pytania o git cherry-pick

Co robi git cherry-pick?
Bierze zmiany wprowadzone przez konkretny commit i nakłada je na bieżącą gałąź jako zupełnie nowy commit (z nowym hashem). W przeciwieństwie do merge czy rebase nie przenosi całej gałęzi, tylko commit albo commity, które wskażesz.
Kiedy używać cherry-pick?
Wtedy, gdy potrzebujesz jednego konkretnego commita gdzie indziej, na przykład przy przenoszeniu poprawki błędu z 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?
Wymień je: 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 zatrzymuje się i oznacza pliki z konfliktami. Rozwiąż je, dodaj wynik przez 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?
Znajdź hash commita przez 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?
git merge przenosi wszystkie commity z gałęzi i zapisuje miejsce, w którym historie się połączyły. Cherry-pick kopiuje tylko wskazane commity jako nowe, bez powiązania z oryginałami. Scalaj gałąź, gdy chcesz jej całość; używaj cherry-pick, gdy chcesz jeden czy dwa commity.
Czy mogę to przećwiczyć online?
Tak. Otwórz terminal online i uruchom 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.
Ilustracja języków programowania w Coddy

Ucz się Gita z Coddy

ZACZNIJ