git rebase -i

Submitted by Erik Wegner on
Body

Das folgende Beispiel zeigt die Möglichkeiten auf, die ein interaktives git rebase eröffnet.

Ausgangslage

In der Entwicklung gibt es den master-Zweig. Davon wurde in der Vergangenheit der r2-Zweig abgeleitet, der für ein besonderes Release genutzt werden soll. Nebenher wurden bereits zwei Features in den Zweigen T1 und T2 entwickelt. Dieser Zustand kann mit dem Script prepare-repo.sh erzeugt werden.

Zweige im Repository

Commits übertragen

Das Feature aus dem Zweig T2 soll in den Release-Zweig r2 übertragen werden. Dafür kann der Befehl git rebase -i --onto r2 branchPoint genutzt werden. Es erscheint der Vorschlag der Commits, die gewollten Commits werden ausgewählt:

Vorgeschlagene Commits: Vorgeschlagene Commits, Gewünschte Commits: Gewünschte Commits

Es entsteht folgender (unerwünschter) Zustand:

Unerwünschte Zweigstruktur

Hilfszweig verwenden

Leichter geht es, erst einen Zwischenzweig anzulegen und damit zu arbeiten:

git branch r2WithT2 T2
git checkout r2WithT2
git rebase -i --onto r2 branchPoint r2WithT2

Das Ergebnis zeigt schon die richtige Grundlage:

Erfolgreiches rebase

Aufräumen

Die Zweige werden jetzt noch angeordnet:

git checkout r2
git merge --ff r2WithT2
git branch -D r2WithT2

Und das gewünschte Ergebnis ist erreicht:

Gewünschtes Ergebnis

Viele Tipps dazu gibt es bei https://learngitbranching.js.org/.

Categories

Git

Das bekannte verteilte Versionskontrollsystem.

Files