Zum Inhalt springen

Aufgabe 15 - Git I - Zeitmaschine

Zu Zen-Modus wechseln

Ihr erster vollständiger Git-Workflow: Repository anlegen, Schnappschüsse machen, Historie lesen und in ihr zurückreisen (siehe Kapitel Versionsverwaltung mit Git). Ab dieser Übung wird jedes Projekt des Schuljahres in einem Repository geführt; die hier eingeübten Handgriffe sind also keine Übungsdekoration, sondern der künftige Alltag, bis hin zur Abgabe des Abschlussprojekts.

  • Kapitel Versionsverwaltung mit Git, Abschnitte Konzepte, drei Bereiche und täglicher Zyklus.
  • Git (installiert, mit Name und E-Mail konfiguriert), ein Terminal.
  • Ein bestehendes eigenes Python-Projekt als Spielmaterial, etwa die Mediathek aus Aufgabe 09.
  • Sie erklären die Konzepte Repository, Staging, Commit und Historie mit eigenen Worten.
  • Sie wenden den täglichen Zyklus (status, add, commit, log, diff) sicher an.
  • Sie schreiben Commit-Messages, die eine brauchbare Projektgeschichte ergeben.
  • Reproduktion: die Grundkommandos ausführen und ihre Wirkung beschreiben (Teil A).
  • Reorganisation und Transfer: Historie lesen, Unterschiede analysieren und Zustände gezielt wiederherstellen (Teile B und C).
  • Reflexion, Problemlösung und Urteilsbildung: eine Fehlersituation per Historie aufklären und Arbeitsregeln begründen (Teil D).

Die Übung ist auf etwa zwei Stunden ausgelegt. Führen Sie vor und nach jedem Schritt git status aus; das Kommando ist der Kompass dieser Übung. Teil D ist der Expertenteil.

  1. Legen Sie ein neues Verzeichnis an, kopieren Sie Ihr Projekt hinein und machen Sie mit git init ein Repository daraus.
  2. Erster Commit: git add für alle Projektdateien, dann git commit -m "Initial version of the media library".
  3. Beobachten Sie mit git status die drei Bereiche: Ändern Sie eine Datei (Status: modified), stagen Sie sie (Status: staged), committen Sie (Status: clean). Notieren Sie die drei Statusausgaben.
  1. Machen Sie vier weitere Commits mit echten, kleinen Änderungen (neue Methode, Docstring, Umbenennung, Korrektur). Jede Message: eine Zeile im Imperativ, die die Änderung benennt.
  2. Legen Sie eine .gitignore mit __pycache__/ an und committen Sie sie. Prüfen Sie, dass ein erzeugter __pycache__-Ordner in git status nicht mehr auftaucht.
  3. Zeigen Sie die Historie mit git log --oneline und notieren Sie die Kurz-Hashes.
  1. Zeigen Sie mit git diff <hash1> <hash2> die Änderungen zwischen zwei früheren Commits und beschreiben Sie in einem Satz, was das Diff aussagt.
  2. Machen Sie eine Datei absichtlich kaputt (Inhalt löschen, speichern, nicht committen) und stellen Sie sie mit git restore wieder her.
  3. Stagen Sie eine Änderung und holen Sie sie mit git restore --staged <file> wieder aus der Staging Area, ohne die Änderung selbst zu verlieren. Wozu könnte das nützlich sein?
  4. Sehen Sie mit git show <hash> in einen alten Commit hinein, ohne die Zeitreise anzutreten.
  1. Präparieren Sie den Fall selbst: Bauen Sie in einem Ihrer nächsten drei Commits einen unauffälligen inhaltlichen Fehler ein (etwa ein Vorzeichen gedreht), committen Sie danach noch zweimal Harmloses.
  2. Tauschen Sie das Repository mit einer Kollegin oder einem Kollegen. Auftrag: Finden Sie im fremden Repository nur mit Git-Mitteln (log, diff, show, gerne git log -p <file>), in welchem Commit der Fehler entstand. Protokollieren Sie Ihren Suchweg.
  3. Diskutieren Sie in drei Sätzen: Wie hätte eine bessere oder schlechtere Commit-Aufteilung (“ein Commit, ein Thema” gegen “alles von heute”) Ihre Suche verändert?
  4. Beantworten Sie schriftlich in je zwei bis drei Sätzen: Wozu existiert die Staging Area, statt immer alles zu committen? Woran erkennt man eine gute Commit-Message? Warum gehören erzeugte Dateien nicht in die Historie?
  1. Nennen Sie die drei Bereiche von Git und das Kommando, das eine Änderung jeweils in den nächsten Bereich bewegt.
  2. Was enthält ein Commit außer den Dateiinhalten?
  3. Worin unterscheiden sich git diff und git diff --staged?
  4. Was tut git restore <file>, und warum ist Vorsicht geboten?
  5. Sie übernehmen ein fremdes Projekt. Welche zwei Git-Kommandos verschaffen Ihnen als Erstes einen Überblick, und was zeigen sie?

Das Repository (Push auf das Schul-GitLab oder ZIP samt .git-Ordner), die Ausgabe von git log --oneline, das Detektiv-Protokoll und die schriftlichen Antworten aus Teil D.