Close

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.

Bazy danych
materiały pokrewne

Jak przenieść pełne repozytorium Git

Logo Bitbucket
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


Bywa, że gałąź funkcji staje się nieaktualna i nie jest scalana z gałęzią główną. Czasami pull requesty są zamykane bez scalania. W Git takie commity nigdy nie giną i można je wyszukać za pomocą takich poleceń jak git log czy git reflog, a następnie odpowiednio wyselekcjonować.

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ł

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.

Ludzie współpracujący przy ścianie pełnej narzędzi

Blog Bitbucket

Ilustracja DevOps

Ścieżka szkoleniowa DevOps

Demonstracje funkcji z ekspertami Atlassian

Zobacz, jak Bitbucket Cloud współpracuje z Atlassian Open DevOps

Zapisz się do newslettera DevOps

Thank you for signing up