Sobes.tech
Junior

Czym jest cherry-pick?

sobes.tech AI

Odpowiedź od AI

git cherry-pick służy do przenoszenia jednego lub kilku commitów z jednej gałęzi do drugiej.

Zasada działania:

  1. Wybiera określony commit (lub commity) w gałęzi źródłowej.
  2. Zastosowuje zmiany zawarte w tych commitach do aktualnej aktywnej gałęzi.
  3. Tworzy nowe commity w bieżącej gałęzi z tymi samymi zmianami i wiadomościami co oryginalne.

Kiedy używać:

  • Przenoszenie konkretnej poprawki błędu z jednej gałęzi (np. produkcja) do innej (np. rozwój), bez wpływu na inne zmiany.
  • Zastosowanie zmian z jednej gałęzi funkcji do innej, bez pełnego scalania.
  • Anulowanie nieprawidłowych merge'ów przy zachowaniu oddzielnych commitów.

Różnice od merge i rebase:

  • merge: łączy całą historię zmian z jednej gałęzi z drugą.
  • rebase: przepisywuje historię commitów, przesuwając je na nową bazę.
  • cherry-pick: stosuje tylko wybrane commity, tworząc nowe i nie zmieniając historii oryginalnych commitów.

Podstawowe polecenie:

# Przeniesienie jednego commitu
git cherry-pick <commit-hash>

# Przeniesienie kilku commitów (w kolejności ich wskazania)
git cherry-pick <commit-hash-1> <commit-hash-2> ...

Przykład:

Załóżmy, że są dwie gałęzie: main i feature. Na gałęzi feature wykonano commit fix-typo. Należy przenieść ten commit do gałęzi main.

# Przełącz się na docelową gałąź
git checkout main

# Wykonaj cherry-pick, używając hasha commitu z gałęzi feature
git cherry-pick 7f3bca2 # Przykładowy hash commitu

Po wykonaniu polecenia w gałęzi main pojawi się nowy commit z tymi samymi zmianami co fix-typo, ale z innym hashem.