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.

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.