Git Cherry Pick

git cherry-pick jest potężnym poleceniem, które umożliwia wybranie dowolnych commitów Git przez odniesienie i dołączenie ich do bieżącego roboczego HEAD. Cherry picking jest aktem wybierania commitów z jednej gałęzi i stosowania ich do innej. git cherry-pick może być użyteczne do cofania zmian. Na przykład, powiedzmy, że commit został przypadkowo wykonany w złej gałęzi. Możesz przełączyć się na właściwą gałąź i wybrać commit tam, gdzie powinien należeć.

Kiedy używać git cherry pick

git cherry-pick jest użytecznym narzędziem, ale nie zawsze najlepszą praktyką. Cherry picking może powodować duplikaty commitów i wiele scenariuszy, w których cherry picking będzie działać, zamiast tego preferowane są tradycyjne scalenia. Z tym, że git cherry-pick jest przydatnym narzędziem dla kilku scenariuszy…

Współpraca zespołowa.

Często zdarza się, że zespół znajdzie pojedynczych członków pracujących w lub wokół tego samego kodu. Może nowa funkcja produktu ma komponent backendowy i frontendowy. Może istnieć pewien wspólny kod pomiędzy dwoma sektorami produktu. Być może programista backendu tworzy strukturę danych, którą frontend również będzie musiał wykorzystać. Programista frontendu mógłby użyć git cherry-pick, aby wybrać commit, w którym ta hipotetyczna struktura danych została utworzona. Ten wybór umożliwiłby frontend developerowi kontynuowanie postępu po swojej stronie projektu.

Poprawki błędów

Gdy błąd zostanie odkryty, ważne jest, aby dostarczyć poprawkę do użytkowników końcowych tak szybko, jak to możliwe. Dla przykładowego scenariusza, powiedzmy, że programista rozpoczął pracę nad nową funkcjonalnością. Podczas tworzenia nowej funkcjonalności zidentyfikował istniejący wcześniej błąd. Deweloper tworzy jawny commit łatający ten błąd. Ten nowy commit poprawki może zostać przeniesiony bezpośrednio do gałęzi master, aby naprawić błąd zanim wpłynie on na większą liczbę użytkowników.

Cofanie zmian i przywracanie utraconych commitów

Czasami gałąź feature może przestać działać i nie zostać scalona z master. Czasami pull request może zostać zamknięty bez scalania. Git nigdy nie traci tych commitów, a dzięki poleceniom takim jak git log i git reflog można je znaleźć i przywrócić do życia.

Jak korzystać z git cherry pick

Aby zademonstrować, jak korzystać z git cherry-pick, załóżmy, że mamy repozytorium z następującym stanem gałęzi:

 a - b - c - d Master
\
e - f - g Feature

git cherry-pickużycie jest proste i może być wykonane jak:

git cherry-pick commitSha

W tym przykładzie commitSha jest odnośnikiem do commitów. Możesz znaleźć referencję commit używając git log. W tym przykładzie skonstruowaliśmy powiedzmy, że chcemy użyć commit `f` w master. Najpierw upewnimy się, że pracujemy na gałęzi master.

git checkout master

Następnie wykonujemy cherry-pick następującą komendą:

git cherry-pick f

Po wykonaniu nasza historia Git będzie wyglądała tak:

 a - b - c - d - f Master
\
e - f - g Feature

The f commit has been successfully picked into the master branch

Przykłady git cherry pick

git cherry pick można również przekazać pewne opcje wykonania.

-edit

Przekazanie opcji -edit spowoduje, że git wyświetli monit o komunikat commit przed zastosowaniem operacji cherry-pick

--no-commit

Opcja --no-commit wykona cherry pick, ale zamiast wykonać nowy commit przeniesie zawartość docelowego commita do katalogu roboczego bieżącej gałęzi.

--signoff

Opcja --signoff doda linię podpisu 'signoff’ na końcu wiadomości commitu cherry-pick

Oprócz tych pomocnych opcji git cherry-pick akceptuje także różne opcje strategii scalania. Dowiedz się więcej o tych opcjach w dokumentacji git merge strategies.

Dodatkowo git cherry-pick akceptuje również dane wejściowe opcji do rozwiązywania konfliktów scalania, obejmuje to opcje: --abort --continue i --quit opcje te są omówione bardziej dogłębnie w odniesieniu do git merge i git rebase.

Podsumowanie

Cherry picking jest potężnym i wygodnym poleceniem, które jest niezwykle przydatne w kilku scenariuszach. Cherry picking nie powinien być nadużywany w miejsce git merge lub git rebase. Polecenie git log jest wymagane, aby pomóc w znalezieniu commitów do cherry picking.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.