Wybieranie commitów za pomocą cherry-pick
Dowiedz się, jak wybiórczo przenosić pojedyncze commity z jednej gałęzi do drugiej za pomocą `git cherry-pick`.
Wybieranie commitów za pomocą cherry-pick to bezpłatna lekcja Git & GitHub Professional Workflow na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Git & GitHub Professional Workflow, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Git & GitHub Professional Workflow zawiera 4 lekcji w sumie.
Selektywne przenoszenie commitów
A co, jeśli potrzebna jest tylko jedna konkretna zmiana z gałęzi, a nie cała gałąź? git cherry-pick umożliwia zastosowanie pojedynczego commita z dowolnego miejsca w historii repozytorium bezpośrednio na bieżącej gałęzi.
To jak zerwanie jednej wiśni z drzewa! Na bieżącej gałęzi powstaje zupełnie nowy commit, który powiela zmiany z oryginalnego commita.
Kiedy używać cherry-pick
Załóżmy, że pracuje Pan/Pani nad dużą gałęzią funkcjonalności i odkrywa, że znajdująca się na niej krytyczna poprawka błędu jest również potrzebna w tej chwili na głównej gałęzi produkcyjnej. Nie chce Pan/Pani jeszcze scalać całej gałęzi funkcjonalności.
To idealny przypadek użycia cherry-pick. Umożliwia przeniesienie odizolowanych zmian bez dołączania niezwiązanej pracy.
Podstawowe polecenie
Podstawowe polecenie jest proste: git cherry-pick <commit-hash>.
- Najpierw należy upewnić się, że jest Pan/Pani na gałęzi, na którą ma zostać zastosowany commit.
- Następnie potrzebny jest unikatowy identyfikator (hash) wybieranego commita.
- Git utworzy na bieżącej gałęzi nowy commit zawierający te same zmiany.
git cherry-pick <commit-hash>Znajdowanie hashy commitów
Do użycia cherry-pick potrzebny jest hash! Można go znaleźć za pomocą git log.
Opcja --oneline jest bardzo pomocna, ponieważ wyświetla zwięzły widok:
git log --onelinePrzygotowanie scenariusza cherry-pick
Przygotujmy prosty scenariusz. Utworzymy gałąź main i gałąź feature/login. Na gałęzi feature/login wykonamy commit, który chcemy przenieść na main.
Chcemy przenieść commit „HOTFIX” na main.
git init my_project
cd my_project
echo "Initial content" > file.txt
git add file.txt
git commit -m "Initial commit"
git branch feature/login
git checkout feature/login
echo "Login feature added" >> login.txt
git add login.txt
git commit -m "Add basic login feature"
echo "Fix: Login button style" >> style.css
git add style.css
git commit -m "HOTFIX: Fix login button styling"Wykonywanie cherry-pick
Teraz przełącz się z powrotem na gałąź main i zastosuj commit „HOTFIX”. Załóżmy, że hash commita „HOTFIX: Fix login button styling” to abcdefg.
Po wykonaniu tego polecenia na gałęzi main pojawi się nowy commit zawierający te same zmiany co abcdefg. Użyj git log --oneline, aby go zobaczyć!
git checkout main
git cherry-pick abcdefgRozwiązywanie konfliktów cherry-pick
Podobnie jak podczas scalania, cherry-pick może prowadzić do konfliktów, jeśli te same wiersze kodu zostały zmienione w różny sposób w obu historiach.
- Git wstrzyma operację i oznaczy pliki zawierające konflikty.
- Należy ręcznie rozwiązać konflikty w plikach.
- Rozwiązane pliki należy dodać za pomocą
git add. - Operację należy zakończyć poleceniem
git cherry-pick --continue.
# After resolving conflicts in editor:
git add .
git cherry-pick --continueWybieranie wielu commitów
Można użyć cherry-pick dla więcej niż jednego commita naraz.
Aby wybrać zakres commitów (od hashA do hashB, bez hashB):
git cherry-pick hashA..hashBKiedy używać (a kiedy nie)
Cherry-pick jest potężnym narzędziem, ale należy używać go rozważnie.
- Dobry wybór w przypadku: poprawek krytycznych oraz przenoszenia małych, odizolowanych zmian między niepowiązanymi gałęziami.
- Mniej odpowiedni w przypadku: regularnego integrowania dużych zestawów zmian, ponieważ może prowadzić do powielania commitów i utrudniać śledzenie historii. Do integracji całych gałęzi lepiej użyć scalania lub rebase.
Szybki test: cel cherry-pick
Na gałęzi feature/new-design znajduje się commit naprawiający krytyczny problem ze stylami. Potrzebuje Pan/Pani tej poprawki natychmiast na gałęzi main, bez scalania całej gałęzi funkcjonalności.
Podsumowanie: ukierunkowane zmiany
W tej lekcji poznaliśmy git cherry-pick — przydatne polecenie do stosowania konkretnych commitów na bieżącej gałęzi.
- Tworzy ono na docelowej gałęzi nowy commit zawierający te same zmiany.
- Doskonale sprawdza się w przypadku poprawek krytycznych i przenoszenia odizolowanych zmian.
- Potrzebny jest hash commita, zwykle znajdowany za pomocą
git log --oneline. - Należy być przygotowanym na rozwiązywanie konfliktów, podobnie jak podczas scalania.
Opanowanie cherry-pick daje precyzyjną kontrolę nad historią projektu!
Często zadawane pytania
Czy lekcja „Wybieranie commitów za pomocą cherry-pick” jest bezpłatna?
Tak — pełny tekst „Wybieranie commitów za pomocą cherry-pick” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Git & GitHub Professional Workflow, przejdź na CoddyKit PRO. Kurs Git & GitHub Professional Workflow zawiera 4 lekcji w sumie.
Co nauczysz się w „Wybieranie commitów za pomocą cherry-pick”?
Dowiedz się, jak wybiórczo przenosić pojedyncze commity z jednej gałęzi do drugiej za pomocą `git cherry-pick`. Ćwiczysz Git & GitHub Professional Workflow z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Git & GitHub Professional Workflow?
Nie wymagamy żadnego doświadczenia. Git & GitHub Professional Workflow w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Wybieranie commitów za pomocą cherry-pick”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Git & GitHub Professional Workflow?
Tak. Każda lekcja Git & GitHub Professional Workflow zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Ręczne rozwiązywanie konfliktów scalania
- Interaktywny rebase historii
- Wybieranie commitów za pomocą cherry-pick
- Ponowne wykorzystywanie rozwiązań konfliktów za pomocą Git Rerere