Jak skopiować niektóre commity z jednego brancha na drugi?

Dzisiaj stała się taka sytuacja, że przez roztargnienie zamiast utworzyć nowy branch z mastera pracowałem na branchu z całkowicie nową funkcjonalnością, która zanim wejdzie na mastera to minie jeszcze kilka dobrych tygodni. Niestety moje zadanie było dość ważne i nie mogło tyle czekać. Także co robić?

Opcja pierwsza – bardzo kiepska. Kopiuje linijka po linijce wszystkie zamiany z jednego brancha na drugi. Nudne, żmudne i nie pasuje do mojej leniwej natury.

Opcja druga – ciekawsza. Polecenie cherry-pick. Jest to polecenie w gicie, które kopiuje zmiany z jednego brancha (gałęzi) do aktualnej. Polecenie to pozwala kopiować poszczególne commity.

Działanie jest wyjątkowo proste. Przechodzimy na brancha na który mamy skopiować commita niech to będzie hotfix-error-500. Wyszukujemy np w gitlabie czy githubie odpowiedniego commita i na koniec wykonujemy polecenie git cherry-pick hashCommita

Najpierw najważniejsze. Jak znaleźć ten hash commita? Wersja najprostsza czyli wchodzimy na gitlaba do odpowiedniego projektu. Wyszukujemy zakładki commits i interesujące nas commity. Klikamy tam przycisk kopiuj lub przepisujemy skrócony hash. Wygląda to tak:

Przykładowa lista commitów

Teraz kod w całej okazałości:

git checkout master
git checkout -b hotfix-error-500
git cherry-pick 76d5f8ad
git commit -m "copy commit"
git push origin hotfix-error-500

No i tyle. O wiele szybciej niż kopiować teraz wszystkie zmiany związane z zadaniem 😉

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *