Im Beitrag „Merging“ wurde schon eine Methode erklärt wie Änderungen eines anderen Branches übernommen werden können.
Beim „Rebasing“ geht es prinzipiell auch um das anwenden von Änderungen eines „anderen Branches“, jedoch ist dieser „andere Branch“ ein besonderer – nämlich der ursprüngliche Branch, von dem der neue Branch erstellt wurde.
Gehen wir von folgendem Stand aus:
D.h. am master Branch wurden 2 Commits getätigt, danach wurde von diesem Stand ein Feature-Branch erstellt und danach wurden 2 weitere Commits am master Branch durchgeführt.
Der Zeitpunkt, wo der Feature-Branch erstellt wurde (bzw. genauer gesagt der Commit) wird hier als „Base“ bezeichnet von dem der Branch gestartet wurde.
Wenn jedoch nach dem erstellen des Branches Änderungen an der „Base“ durchgeführt wurden (hier der master Branch) werden diese natürlich nicht am Feature-Branch mit übernommen.
Jedoch kann es leicht sein, dass der feature-Branch noch nicht fertig zu mergen auf den master Branch ist. Um jedoch trotzdem die Änderungen des master-Branches auf dem feature-Branch zu erhalten kann ein „rebase“ durchgeführt werden:
git rebase master
Aktueller ausgecheckter Branch ist der Feature-Branch. Damit führen wir im Endeffekt folgende „Verschiebung“ durch: