Lab 13: Repositories aufräumen (Terminal)¶
Hintergrund¶
Du übernimmst ein Repository von einem Kollegen, der "noch nicht so weit war mit Git". Das Repo hat eine ganze Reihe von Problemen. Deine Aufgabe: Bringe es in einen sauberen Zustand — und lerne dabei, die bisher gelernten Git-Werkzeuge in Kombination einzusetzen.
Vorbereitung¶
Öffne das Terminal im Verzeichnis labs/13-repository-aufraeumen/exercise.
Verschaffe dir einen Überblick:
git status
git log --oneline --all
git stash list
Phase 1: Analyse¶
Beantworte die folgenden Fragen, bevor du etwas änderst:
- Welche Dateien werden getrackt, die nicht ins Repo gehören?
(Tipp:
git ls-files) - Was hat der letzte Commit für eine Message — und was stimmt daran nicht?
- Was enthält der "Monster-Commit"? Wie viele unabhängige Änderungen sind darin
gebündelt? (Tipp:
git show --stat) - Gibt es gestashte Arbeit? Was ist darin enthalten?
- Sind Dateien im Staging-Bereich, die dort nicht sein sollten?
Phase 2: .gitignore & Tracking-Probleme¶
Das Repo trackt Dateien, die nicht hineingehören:
.alpackages/enthält riesige Binärdateien (Symbole).vscode/launch.jsonenthält ein Passwort
Aufgabe:
- Erstelle eine saubere
.gitignore. - Entferne die Dateien aus dem Tracking, ohne sie von der Festplatte zu löschen.
- Committe die Korrektur.
Hinweis: Erinnere dich an
git rm --cachedaus Übung 03.
Phase 3: Den Monster-Commit aufspalten¶
Der Commit mit der Message "Did stuff" enthält mehrere unabhängige Änderungen, die in separate Commits gehören.
Aufgabe: Spalte ihn in einzelne, atomare Commits auf.
Hinweise:
git reset --soft HEAD~<n>setzt Commits zurück, behält aber alle Änderungen im Staging. Finde heraus, wie weit du zurückgehen musst. Achtung: Wenn du in Phase 2 bereits Commits erstellt hast, setze nur bis zum Monster-Commit zurück — nicht weiter, sonst werden auch deine Phase-2-Commits aufgelöst.- Mit
git reset HEAD <datei>kannst du einzelne Dateien aus dem Staging entfernen. - Mit
git add -pkannst du Teile einer Datei stagen.
Jeder Commit sollte:
- Genau eine logische Änderung enthalten
- Eine Commit-Message nach den Regeln haben (Imperativ, max. 50 Zeichen Betreffzeile, Erklärung im Body)
Phase 4: Commit-Message reparieren¶
Einer der Commits hat eine schlechte Message.
Aufgabe: Korrigiere sie mit git commit --amend.
Phase 5: Gestashte Arbeit einarbeiten¶
Im Stash liegt angefangene Arbeit.
Aufgabe:
- Untersuche, was im Stash liegt (
git stash show -p). - Wende den Stash an.
- Committe die Änderungen sauber.
Validierung¶
git ls-files .alpackagesgibt nichts zurück.git log --onelinezeigt nur Commits mit aussagekräftigen Messages.- Kein Commit enthält mehr als eine logische Änderung
(
git show --statpro Commit prüfen). git stash listist leer.
Diskussion¶
- Was war die schwierigste Aufgabe — und warum?
- Wie hättet ihr die Probleme von vornherein vermieden?
- Welche Regeln wollt ihr in eurem Team etablieren?