Lab 13: Repositories aufräumen (VS Code)¶
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 Werkzeuge in Kombination einzusetzen.
Vorbereitung¶
Öffne VS Code im Verzeichnis labs/13-repository-aufraeumen/exercise.
Verschaffe dir einen Überblick: Schau dir die Dateiansicht, die
Repository-Ansicht und die GitLens-Commit-Liste an. Prüfe auch, ob es
gestashte Arbeit gibt (... → "Stash" → "View Stash...").
Phase 1: Analyse¶
Beantworte die folgenden Fragen, bevor du etwas änderst:
- Welche Dateien werden getrackt, die nicht ins Repo gehören? Schau dir die Dateiliste in der Explorer-Ansicht und die GitLens-Commit-Inhalte an.
- Was hat der letzte Commit für eine Message — und was stimmt daran nicht?
- Was enthält der "Monster-Commit"? Klappe ihn in GitLens auf und zähle, wie viele unabhängige Änderungen darin gebündelt sind.
- 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:
- Entferne die gestaged Datei, die nicht committet werden soll, aus dem
Staging (klicke auf
-neben der Datei unter "Staged Changes"). - Erstelle über die Dateiansicht eine neue Datei
.gitignoremit den passenden Einträgen. - Entferne die Dateien aus dem Tracking. Dafür benötigst du das Terminal
(View → Terminal) und den Befehl
git rm --cached. - Stage die
.gitignoreund committe die Korrektur.
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:
- Nutze in GitLens Rechtsklick → "Reset Current Branch to Commit..." auf den Commit vor dem Monster-Commit. Wähle "Soft Reset --soft", damit alle Änderungen im Staging bleiben.
- Beachte: Du musst dabei auch den Commit mit der schlechten Message zurücksetzen. Überlege, wie weit du zurückgehen musst.
- Entferne dann einzelne Dateien aus dem Staging (klicke auf
-neben der Datei) und committe Schritt für Schritt — jeweils mit einer sauberen Message.
Jeder Commit sollte:
- Genau eine logische Änderung enthalten
- Eine Commit-Message nach den Regeln haben (Imperativ, max. 50 Zeichen Betreffzeile)
Phase 4: Commit-Message reparieren¶
Falls der Commit mit der schlechten Message noch existiert: Korrigiere die Message über den Dropdown-Pfeil neben "Commit" → "Commit (Amend)".
Wenn du den Commit in Phase 3 bereits mit einer sauberen Message neu erstellt hast, entfällt dieser Schritt.
Phase 5: Gestashte Arbeit einarbeiten¶
Im Stash liegt angefangene Arbeit.
Aufgabe:
- Untersuche, was im Stash liegt (
...→ "Stash" → "View Stash..."). - Wende den Stash an ("Apply Latest Stash").
- Stage und committe die Änderungen sauber.
- Räume den Stash auf ("Drop Stash...").
Validierung¶
- In der Dateiansicht werden
.alpackages/und.vscode/launch.jsonnicht mehr als getrackte Dateien angezeigt. - Die GitLens-Commit-Liste zeigt nur Commits mit aussagekräftigen Messages.
- Kein Commit enthält mehr als eine logische Änderung (klappe Commits in GitLens auf, um die enthaltenen Dateien zu prüfen).
- Unter
...→ "Stash" → "View Stash..." ist kein Eintrag mehr vorhanden.
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?