0Pricing
Git & GitHub Professional Workflow · Lekcja

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 --oneline

Przygotowanie 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 abcdefg

Rozwią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 --continue

Wybieranie 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..hashB

Kiedy 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

  1. Ręczne rozwiązywanie konfliktów scalania
  2. Interaktywny rebase historii
  3. Wybieranie commitów za pomocą cherry-pick
  4. Ponowne wykorzystywanie rozwiązań konfliktów za pomocą Git Rerere
← Powrót do Git & GitHub Professional Workflow