Rebase
Dotychczasowe techniki łączenia dwóch gałęzi były niedestrukcyjne - ich działanie w żaden sposób nie modyfikowało historii. Rebase jest formą łączenia dwóch gałęzi destrukcyjną - zmienia on historię gałęzi, do której włączamy zmiany.
Dzieje się tak dlatego, że w trakcie procesu rebase zmiany dokonane w ramach gałęzi są tymczasowo usuwane i nanoszone na nowo z tą różnicą, że przodek nowych commitów jest teraz aktualną wartością HEAD łączonej gałęzi:
Ćwiczenie
Stwórz nowe repozytorium:
mkdir git-rebase-clean
cd git-rebase-clean
git init
touch README.md
touch LICENSE.md
git add README.md LICENSE.md
git commit -m "Initial commit"
Teraz stwórz nowy branch i dokonaj na nim zmian:
git checkout -b license
echo '#LICENSE' > LICENSE.md
git add LICENSE.md
git commit -m "License"
Wróć na branch master i tam też dokonaj zmian:
git checkout master
echo '#README' > README.md
git add README.md
git commit -m "README"
Wypisz historię gałęzi master - zapisz SHA1 commitów.
Przejdź na branch license i zapisz SHA1 commitów znajdujących się na nim:
Dokonaj rebase i sprawdź jak wygląda historia:
git rebase master