Rebase
Ziel
- In diesem Projekt sollen Sie sich mit dem Rebase, der Alternative zum Mergen, vertraut machen.
Hilfsmittel
- Versuchen Sie zuerst, die unten stehenden Aufgaben mit Hilfe der Folien und des Cheatsheets zu lösen.
- Sollten Sie dabei Probleme haben, finden Sie bei jeder Aufgabe einen ausklappbaren Block, in dem der Lösungsweg beschrieben wird.
Aufgabe 1
Verlassen Sie das Repository conflict
und legen Sie ein neues an:
cd .. # Den Order conflict verlassen
mkdir rebase # Einen neuen Ordner anlegen
cd rebase # In den neuen Ordner wechseln
git init # Ein Git-Repository anlegen
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
- Verlassen Sie den Ordner
conflict
mit dem Kommandocd ..
. - Führen Sie
pwd
aus. Sie sollten die Augabe/root/workspace
erhalten. - Sollten Sie die Ausgabe nicht erhalten, wechseln Sie mit
cd /root/workspace
in das Verzeichnis. - Wenn Sie im richtigen Verzeichnis sind, führen Sie
mkdir rebase
aus. - Wechseln Sie mit
cd rebase
in den neu angelegten Ordner. - Führen Sie
git init
aus. Dadurch wird das Verzeichnis zu einem Git-Repository und Sie können Dateien/Änderungen committen.
Aufgabe 2
- Bauen Sie den untenstehenden Graphen nach.
Jeder grüne Knoten steht dabei für einen Commit. Gehen Sie dazu für jeden Commit/Knoten folgendermaßen vor:
-
Legen Sie den branch
us-42
an.Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
git switch -c us-42
-
Legen Sie eine Datei mit dem Knotennamen als Namen an. Sie können dafür über die Seitenleiste vorgehen, oder im Terminal den Befehl
touch <Dateiname>
nutzen.Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
z.B. für den ersten Commit
C1
:touch C1
-
Fügen Sie die Datei der Staging Area hinzu und committen Sie Ihre Änderung mit dem Knotennamen als Commitnachricht.
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
z.B. für den ersten Commit
C1
:git add C1 git commit -m "C1"
-
Gehen von einem Knoten mehrere Branches ab, fügen Sie gegebenenfalls einen neuen Branch hinzu.
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
z.B. für den dritten Commit
C3
ausgehend von CommitC2
:Dann kann der dritte Commitgit switch -c testing
C3
erstellt werden. Und anschließend der Branch gewechselt werden.touch C3 git add C3 git commit -m "C3" git switch us-42
-
Vervollständigen Sie den Graphen. In VSCode sollte es im Git Graph Plugin dann folgendermaßen oder ähnlich aussehen:
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
Die vollständige Lösung sieht folgendermaßen aus:
git switch -c us-42
touch C1
git add C1
git commit -m "C1"
touch C2
git add C2
git commit -m "C2"
git switch -c testing
touch C3
git add C3
git commit -m "C3"
git switch us-42
touch C4
git add C4
git commit -m "C4"
Aufgabe 3
Führen Sie einen Rebase aus, sodass die Änderungen von C3
auf C4
angewendet werden und der Branch us-42
auf den neuen Commit C3
zeigt.
In VSCode soll es im Git Graph Plugin dann folgendermaßen aussehen:
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
- Sie haben nun einen Branch
us-42
und einen Branchtesting
. Dertesting
-Branch beinhaltet leider nicht die neusten Änderungen vonus-42
. Das wollen wir nun ändern, indem wir einen Rebase ausführen. - Wechseln Sie dazu auf den Branch
testing
mitgit switch testing
. - Starten Sie den Rebase mit
git rebase us-42
damit die Änderungen vontesting
nun wieder auf den aktuellen Änderungen vonus-42
basieren. - Als Letztes wollen wir nun die Änderungen von
testing
inus-42
integrieren. Wechseln Sie dazu mitgit switch us-42
auf den Branchus-42
. - Führen Sie mit
git merge testing
einen Fast-Forward-Merge aus. - Sehen Sie sich mit
git log
das Ergebnis an.