Git – merge vs. rebase

Dziś przedstawię różnicę pomiędzy merge a rebase.

Obie komendy służą do rozwiązania tego samego problemu. Do włączenia zmian z jednego branch’a do innego branch’a. Innymi słowy służą do synchronizacji duch gałęzi np lokalnej i zdalnej. Robią to jednak na rożne sposoby. Ale zacznijmy od początku.

Zakładając gałąź główną „master” tworzymy z niego branch’a pobocznego na którym będziemy pracować i wykonywać zmiany nie zmieniając postaci „master’a”. W czasie naszej pracy inny członek zespołu wysłał zmiany na repozytorium i dokonał aktualizacji „master’a”. Proszę spójrz na poniższy rysunek który przedstawia tą sytuacje.

Dodatkowo te zmiany są nam potrzebne w naszej pracy więc aby móc dalej pracować na aktualnym projekcie potrzebujemy zaktualizować naszą gałąź np o nazwie „feature” o zmiany z „master”. Jednym ze sposobów jest „merge”. Wówczas aby wykonać taką komendą należy napisać:

git checkout feature 
git merge master
lub:
git merge master feature 

Komendy te tworzą dodatkowy „merge commit” który łączy historie obiu gałęzi. Graficznie całą operacje można przedstawić w poniższy sposób.

Merge request

Zaletą komendy „merge” jest to że jest to operacja która nie ingeruje w historie zmian w żadnej gałęzi i ja zachowuje. Wadą natomiast to że razem z wykonaniem „merg’a” pobieramy całą historie commitów które nie są związane bezpośrednio z naszą praca na naszej gałęzi.

Leave a Comment

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