Git — przypadkowe wybieranie
git cherry-pick
to zaawansowane polecenie, które umożliwia wybranie dowolnego commita Git przez referencję i dołączenie go do bieżącego roboczego wskaźnika HEAD. Operacja „cherry pick” polega na wybraniu commita z gałęzi i dołączeniu go do innej gałęzi. Polecenie git cherry-pick
może być przydatnym narzędziem do cofania zmian. Załóżmy na przykład, że commit zostanie przypadkowo wprowadzony w niewłaściwej gałęzi. Możesz przełączyć się do właściwej gałęzi i za pomocą operacji „cherry pick” wstawić commit tam, gdzie powinien się znaleźć.
Kiedy używać polecenia „git cherry-pick”
Polecenie git cherry-pick
jest użytecznym narzędziem, ale nie zawsze najlepszym rozwiązaniem. Operacja „cherry pick” może doprowadzić do powstania zduplikowanych commitów, a w wielu sytuacjach, w których mogłaby zadziałać, preferuje się tradycyjne operacje scalania. Mając to na uwadze, warto wskazać kilka sytuacji, w których polecenie git cherry-pick
naprawdę się przydaje.
Współpraca zespołowa
W zespołach często zdarza się, że poszczególni członkowie pracują na tym samym kodzie lub wokół niego. Przykładowo wtedy, gdy nowa funkcja produktu ma komponent backendowy i frotnendowy. Może się też zdarzyć, że dwa różne sektory produktu wykorzystują pewną część wspólnego kodu. Przykładowo programista backendu tworzy strukturę danych, która będzie musiała być używana także we frontendzie. W takiej sytuacji programista pracujący nad frontendem może użyć polecenia git cherry-pick
do wybrania commita, w którym utworzono tę hipotetyczną strukturę danych. Taki wybór dałby programiście frontendu możliwość kontynuowania pracy po swojej stronie projektu.
materiały pokrewne
Jak przenieść pełne repozytorium Git
POZNAJ ROZWIĄZANIE
Poznaj środowisko Git z rozwiązaniem Bitbucket Cloud
Poprawki błędów
W razie wykrycia błędu najważniejsze jest jak najszybsze dostarczenie poprawki użytkownikom końcowym. W naszym przykładowym scenariuszu załóżmy, że programista rozpoczął pracę nad nową funkcją. W trakcie pracy nad tą nową funkcją wykryto wcześniej istniejący błąd. Programista tworzy jawny commit z poprawką tego błędu. Za pomocą polecenia cherry-pick można pobrać commit z nową poprawką bezpośrednio do gałęzi main
, aby naprawić błąd, zanim dotknie on większej liczby użytkowników.
Cofanie zmian i przywracanie utraconych commitów
Jak używać polecenia „git cherry-pick”
Aby zademonstrować sposób użycia polecenia git cherry-pick
, załóżmy, że mamy repozytorium o następującym stanie gałęzi:
a - b - c - d Main
\
e - f - g Feature
Polecenie git cherry-pick
jest proste w użyciu i można je wykonać następująco:
git cherry-pick commitSha
W tym przykładzie fragment commitSha
jest odniesieniem do commita. Odniesienie do commita można znaleźć za pomocą polecenia git log
. Na potrzeby tego przykładu załóżmy, że chcieliśmy użyć commita „f” w gałęzi main
. Najpierw musimy się upewnić, że pracujemy w gałęzi main
.
git checkout main
Następnie wykonujemy operację „cherry pick” za pomocą następującego polecenia:
git cherry-pick f
Po wykonaniu nasza historia Git będzie wyglądać następująco:
a - b - c - d - f Main
\
e - f - g Feature
Commit „f” został pomyślnie pobrany do gałęzi main.
Przykłady polecenia „git cherry-pick”
Za pomocą polecenia git cherry-pick
można również przekazać pewne opcje wykonania.
-edit
Przekazanie opcji -edit
spowoduje wyświetlenie w Git monitu o komunikat dotyczący commita przed zastosowaniem operacji „cherry pick”.
--no-commit
Opcja --no-commit
spowoduje wykonanie operacji „cherry pick”, jednak zamiast utworzenia nowego commita zawartość commita docelowego jest przenoszona do katalogu roboczego bieżącej gałęzi.
--signoff
Opcja --signoff
spowoduje dodanie wiersza podpisu „signoff” na końcu komunikatu dotyczącego commita utworzonego w wyniku operacji „cherry pick”.
Oprócz tych przydatnych opcji polecenie git cherry-pick
przyjmuje również różne opcje strategii scalania. Więcej informacji na temat tych opcji zawiera dokumentacja strategii scalania w Git.
Dodatkowo polecenie „git cherry-pick” przyjmuje również opcje związane z rozwiązywaniem konfliktów scalania, takie jak: --abort --continue
i --quit
, które omówiono szczegółowo w odniesieniu do poleceń git merge i git rebase.
Podsumowanie
„Cherry-pick” to zaawansowane i wygodne polecenie, które bardzo się przydaje w kilku sytuacjach. Nie należy jednak używać go błędnie w zastępstwie poleceń git merge lub git rebase. Aby wyszukać commity, na których ma być wykonana operacja „cherry pick”, należy użyć polecenia git log.
Udostępnij ten artykuł
Następny temat
Zalecane lektury
Dodaj te zasoby do zakładek, aby dowiedzieć się więcej na temat rodzajów zespołów DevOps lub otrzymywać aktualności na temat metodyki DevOps w Atlassian.