LBweb Łukasz Bącik
git logo Komentarze: 0

Jak zrobić GIT merge?

Rozgałęzienie projektu umożliwia programistom odejście od produkcyjnej wersji kodu w celu naprawienia błędu lub dodania funkcji. W tym artykule dowiesz się o łączeniu branch’y z lokalnym lub zdalnym repozytorium za pomocą git merge.

Deweloperzy tworzą branch’e do pracy z kopią kodu bez modyfikowania istniejącej, produkcyjnej wersji. Tworzysz gałęzie, aby wyizolować zmiany w kodzie, które testujesz przed scaleniem z główną gałęzią. Zatem dowiedzmy się jak działa mechanizm git merge.

Wstęp

Załóżmy, że tworzysz stronę w zespole kilkuosobowym i pracujecie w obrębie jednego repozytorium. Nie trzeba chyba tłumaczyć, iż commit’y powinny być zwięzłe, dobrze opisane oraz częste. To zapewni aktualność kodu, ale także ograniczy potencjalną szansę na wystąpienie dużej ilości konfliktów. Tworzenie i usuwanie branch’y już opisywałem, zapraszam.

git merge

git merge
git merge

Po zakończeniu prac nad swoimi zmianami nadszedł czas, aby połączyć go z głównym branch’em. Scalanie przenosi zmiany w Twojej gałęzi i wprowadza je do głównej gałęzi.

Najprościej wytłumaczyć to w ten sposób:

  1. commit’ujemy zmiany na nasz branch do repozytorium zdalnego (nazwijmy go roboczo feature),
  2. przełączamy się na branch master,
  3. pobieramy zmiany z repozytorium zdalnego,
  4. łączymy zmiany z naszym branchem.
$ git merge feature

W idealnym przypadku zmiany zostaną połączone i będzie można wypchnąć wszystko do repozytorium zdalnego.

Są konflikty?

Często zdarza się tak, że w tzw. międzyczasie ktoś dodał do repozytorium zmiany, które kolidują z naszymi zmianami. W takim przypadku podczas git merge wystąpią u nas konflikty.

$ git merge feature
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.

W takiej sytuacji otwieramy wskazany plik, w którym wystąpiły konflikty i odszukujemy następujących linii:

<<<<<<< HEAD
// zmiany z zewnątrz
=======
// nasze zmiany
>>>>>>> feature

To moment, w którym musimy rozwiązać konflikty. Duża ilość konfliktów możliwe, że będzie wymagała konsultacji z autorem zmian, jednak na ogół przy niewielkich zmianach będziemy w stanie poradzić sobie sami. Należy porównać te zmiany i zastąpić powyższą konstrukcję poprawnym, połączonym kodem.

Po rozwiązaniu wszystkich konfliktów możemy spokojnie „zacommitować” rozwiązane konflikty:

$ git commit -m "merged and resolved the conflict in index.html"
$ git push origin master

Jak cofnąć git merge?

Może się także zdarzyć, że będziemy potrzebować całkowicie cofnąć efekt komendy git merge. W takim przypadku przyda się polecenie:

$ git merge --abort

Wykonanie tego polecenia z flagą --abort spowoduje wyjście z procesu scalania i przywrócenie gałęzi do stanu sprzed scalenia.

Dodaj komentarz

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