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
conflictmit dem Kommandocd ... - Führen Sie
pwdaus. Sie sollten die Augabe/root/workspaceerhalten. - Sollten Sie die Ausgabe nicht erhalten, wechseln Sie mit
cd /root/workspacein das Verzeichnis. - Wenn Sie im richtigen Verzeichnis sind, führen Sie
mkdir rebaseaus. - Wechseln Sie mit
cd rebasein den neu angelegten Ordner. - Führen Sie
git initaus. Dadurch wird das Verzeichnis zu einem Git-Repository und Sie können Dateien/Änderungen committen.
Aufgabe 2
- Bauen Sie den unten stehenden Graphen mit folgenden Eigenschaften nach:
- Knotenname = Commit-Nachricht
- Jeder Commit (außer Merge Commits) soll eine Datei mit dem gleichen Namen anlegen.
- Beispiel: Commit
C1legt eine neue DateiC1an.
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
- Erstellen Sie zuerst den Branch
us-42mitgit switch -c us-42. - Erstellen Sie Commit
C1indem Sie eine DateiC1anlegen und diese committen. - Machen Sie dasselbe für
C2. - Erstellen Sie den Branch
testingmitgit switch -c testing. - Erstellen Sie Commit
C3. - Wechseln Sie zurück auf
us-42mitgit switch us-42. - Erstellen Sie Commit
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.
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
- Sie haben nun einen Branch
us-42und einen Branchtesting. Dertesting-Branch beinhaltet leider nicht die neusten Änderungen vonus-42. Das wollen wir nun ändern, indem wir einen Rebase ausführen. - Wechslen Sie dazu auf den Branch
testingmitgit switch testing. - Starten Sie den Rebase mit
git rebase us-42damit die Änderungen vontestingnun wieder auf den aktuellen Änderungen vonus-42basieren. - Als Letztes wollen wir nun die Änderungen von
testinginus-42integrieren. Wechseln Sie dazu mitgit switch us-42auf den Branchus-42. - Führen Sie mit
git merge testingeinen Fast-Forward-Merge aus. - Sehen Sie sich mit
git logdas Ergebnis an.