diff --git a/materials/sheet_local.typ b/materials/sheet_local.typ
index b61cd08d2db08d921d46d550caaf0f5eb89e4997..ad457df65ba8acc2d9dd738252551f23c1aa9bd0 100644
--- a/materials/sheet_local.typ
+++ b/materials/sheet_local.typ
@@ -11,21 +11,21 @@
 
 = Init
 
-Open the downloaded project dir `greekify` in a terminal.
-You should have a file `greekify.py` and `greekify_replace.py` in it.
-
-Calling `git status` should give you an eror message telling you, that neither this nor any upper directory is a git repository.
-Du kannst das Git-Repository immer aus allen Unterverzeichnissen ändern, git sucht automatisch in den höher liegenden Verzeichnissen nach Repositories.
+Öffnet das Projekt `greekify` das ihr per Mail bekommen habt in einem Terminal.
+In diesem sollten sich die Dateien `greekify.py`, `greekify_replace.py` und `test.txt` befinden.
 
+Der Befehl `git status` zeigt grundsätzlich an, in welchem Zustand sich das Repository gerade befindet.
+Aktuell sollte `git status` eine Fehlermeldung anzeigen, dass weder das aktuelle noch irgendein höher liegendes Verzeichnis ein Git-Repository ist.
 ```
 fatal: not a git repository (or any parent up to mount point /)
 ```
+Du kannst das Git-Repository immer aus allen Unterverzeichnissen ändern, git sucht automatisch in den höher liegenden Verzeichnissen nach Repositories.
 
 #task[
   Erstelle ein git-repository im aktuellen Verzeichnis mit `git init`.
 ]
 Anschließend sollte sich ein `.git` Verzeichnis in dem `greekify` Verzeichnis befinden.
-Die Ausgabe von `git log` zeigt dir nun das du auf dem aktuellen Branch (standardmäßig "main" genannt) keine Commits hast.
+Die Ausgabe von `git log` zeigt dir nun, dass du auf dem aktuellen Branch (standardmäßig "main" genannt) keine Commits hast.
 
 ```
 fatal: your current branch 'main' does not have any commits yet
@@ -50,11 +50,10 @@ nothing added to commit but untracked files present (use "git add" to track)
 ```
 
 = Add
-Der nächste Schritt beim Bearbeiten ist das Tracken von Dateien.
+Der nächste Schritt ist das Tracken von Dateien.
 
 #task[
-  Tracke alle Dateien mit `git add greekify.py greekify_replace.py test.txt`.
-  Alternativ kannst du auch `git add .` verwenden um alle Dateien im aktuellen Verzeichnis (genannt `.`) hinzuzufügen.
+  Tracke die $3$ Dateien mit `git add`. Als Argument akzeptiert `git add` eine Liste von Dateien oder Verzeichnissen.
 ]
 
 Du kannst mit `git status` wieder anzeigen, welchen Zustand die Dateien haben.
@@ -65,18 +64,18 @@ Dabei sollte nun angezeigt werden, das die Programm- und Testdateien beim nächs
 ]
 
 = Commit
-Um die Änderung auch ins repository zu übernehmen, kannst du `git commit` verwenden.
+Um die Änderung auch ins Repository zu übernehmen, kannst du `git commit` verwenden.
 Dazu musst du zuerst 2 Konfigurationen setzen.
 Zum einen solltest du zum Bearbeiten der Commit-Message einen Texteditor verwenden und musst Git dafür mitteilen,
 welchen Editor du verwenden möchtest.
-Zum anderen wird bei Commits der Autor gespeichert, dazu musst du Git mitteilen welche Informationen dafür verwendet werden sollen.
+Zum anderen wird bei Commits der Autor gespeichert, dazu musst du Git mitteilen welcher Name und Kontaktdaten dafür verwendet werden sollen.
 
 Konfigurationen werden mit dem Kommando `git config` geändert.
 Mit der Flag `--global` setzt du sie global, ohne wird die Änderung nur für das lokale Repository geändert.
 #footnote[Alternativ kannst du die Datei, in der die Konfiguration gespeichert ist, auch direkt bearbeiten. In unix-artigen Systemen befindet sich die globale config in `$HOME/.gitconfig` und die Repository-lokale config in `./.git/config`]
 
 Mögliche Editoren:
-- Nano (einfach gehalten, empfohlen für Einstiger, das `^` in der Befehlsübersicht steht für die `Strg`-Taste)\
+- Nano (einfach gehalten, empfohlen für Einstiger; das `^` in der Befehlsübersicht steht für die `Strg`-Taste)\
   `git config --global core.editor /bin/nano`
 - Vim (Sehr interessanter Editor dessen Benutzung den Rahmen dieses Workshops weit sprengt)\
   `git config --global core.editor /bin/vim`
@@ -100,7 +99,7 @@ git config user.email "dein.name@rwth-aachen.de"
 ]
 
 #task[
-  Commit die getrackten Änderung mit `git commit`. Dies sollte den zuvor konfigurierten Texteditor öffen, mit einer Übersicht.
+  Commit die getrackten Änderung mit `git commit`. Dies sollte den zuvor konfigurierten Texteditor öffen, mit einer Übersicht der geänderten Dateien.
   Lies dir die generierten Kommentare dort in Ruhe durch.
   Schreibe anschließend eine Commit-Message in die erste Zeile.
   Trage erstmal irgendeine Message ein, wir kommen später dazu wie eine gute Commit-Message aussieht.
@@ -177,17 +176,17 @@ Bei der Commit-Id genügen die ersten 7 Zeichen, im oberen Beispiel wäre der Be
   Falls du das Programm zwischenzeitg ausführst und dabei ein `__PYCACHE__`-Verzeichnis entsteht, committe dieses nicht.
 ]
 
-Der `git log` Befehl kann dir auch nur das log für ausgewählte Dateien anzeigen.
+Der `git log` Befehl kann das Log auch auf ausgewählte Dateien beschränken.
 Die Syntax dafür ist `git log -- Datei1 Datei2`.
 
 #question[
-  Was sollte anschließend die Ausgabe von `git log -- greekify_replace.py` und `git log -- greekify.py` sein? Warum?
+  Was sollten `git log -- greekify_replace.py` und `git log -- greekify.py` jetzt anzeigen? Warum?
 ]
 
 = .gitignore
-Beim Ausführen des Programs sollte ein `__PYCACHE__`-Verzeichnis entstehen.
-Dieses gehört wie alle Cache-Dateien und andere automatisch generierte Dateien nicht ins Git-Repository.
-Um Git darüber zu informieren kannst du ein .gitignore Datei anlegen.
+Beim Ausführen des Programms sollte ein `__PYCACHE__`-Verzeichnis entstehen.
+Dieses gehört wie alle automatisch generierte Dateien nicht ins Git-Repository.
+Um Git darüber zu informieren, kannst du ein .gitignore Datei anlegen.
 In dieser kannst du zeilenweise Dateien eintragen die ignoriert werden sollen.
 Wenn Git eine Datei ignoriert wird sie nicht in `git status` als untracked angezeigt und
 `git add` auf einem höherliegenden Verzeichnis fügt sie nicht hinzu.
@@ -196,7 +195,7 @@ Wenn Git eine Datei ignoriert wird sie nicht in `git status` als untracked angez
   Lege eine `.gitignore`-Datei an, nach der das `__PYCACHE__`-Verzeichnis ignoriert wird.
   Bei Erfolg sollte `git status` die Datei nicht mehr als untracked anzeigen.
   Darüber hinaus sollte `git log -- __pycache__` keine Commits anzeigen, andernfalls hast du `__PYCACHE__`
-  aus Versehen getrackt und Comitted.
+  aus Versehen getrackt und comitted.
 ]
 #info[
   .gitignore akzeptiert auch Wildcards, also Sonderzeichen die es ermöglichen mehrere Dateien in einer Zeile abzudecken.
@@ -209,11 +208,52 @@ Wenn Git eine Datei ignoriert wird sie nicht in `git status` als untracked angez
 #warning[
   Automatisch generierte Dateien gehören nicht ins Git-Repository. Nicht nur weil das unnötig Speicher wegnimmt,
   sondern auch weil die von Menschen vorgenommenen Änderung in der Flut an geänderten generierten Dateien untergehen.
-  Bei Dateien, die nur teilweise automatisch generiert sind (z.B. `Cargo.lock` in Rust Projekten), kann es hingegen schon sinnvoll sein,
+  Bei nur teilweise automatisch generiert Dateien (z.B. `Cargo.lock` in Rust Projekten), kann es hingegen schon sinnvoll sein,
   sie im Git-Repository zu tracken.
 ]
 
+= Diff
+Der Befehl `git diff` gibt den Unterschied zwischen zwei Versionen aus.
+Beispielsweise gibt `git diff 7120114` an, was sich seit Commit `7120114` geändert hat.
+Alternativ akzeptiert `git diff` auch Ranges und Dateien, z.B. gibt `git diff 1f44746..7120114 -- csv-core/src/writer.rs` an,
+was sich von Commit `1f44746` zu Commit `7120114` in der Datei `csv-core/src/writer.rs` geändert hat.
+
+#task[
+  Diese und die folgenden Aufgaben beziehen sich das `rust-csv` Projekt.
+  #set enum(numbering: "a)")
+  1. Finde mit `git diff` heraus, was sich in den letzten $20$ Commits an der Datei `src/tutorial.rs` geändert hat.
+  2. Auch `git log` akzeptiert Ranges.
+     Finde mit `git log` heraus, welche der letzten $20$ Commits die Datei `src/tutorial.rs` geändert haben.
+]
+
+#optional-task[
+  Wie viele Dateien wurden in den letzten $100$ Commits geändert?
+  Öffne mit `man git-diff` das Manual für den `git diff` Befehl.
+  Durchsuche die Optionen für eine Option mit der du die Aufgabe einfach lösen kannst.
+]
+
+= Checkout
+Mit `git checkout` kannst du alte Versionen in deine Working-Area laden.
+Z.B. lädt der Befehl `git checkout 1234567` Commit `1234567`.
+
+#task[
+  Wir viele Zeilen hatte die Datei `README.md` in Commit `77fdafe`?
+]
+#question[
+  Was macht `git checkout HEAD`?
+]
+
 = Zusammenfassung
+Eine Version in Git heißt Commit. Jeder Commit wird anhand eines Hashes eindeutig identifiziert.
+Der Hash kann meist mit den ersten $7$ Zeichen abgekürzt werden.
+
+Nach diesem Aufgabenblatt solltest du mit den folgenden Befehlen grundlegend vertraut sein:
+- `init`
+- `add`
+- `commit`
+- `log`
+- `diff`
+- `checkout`
 
 #optional-task[
   Wiederhole die Übungen in einem neuen Verzeichnis mit der Entwicklungsumgebung deiner Wahl
diff --git a/materials/slides.typ b/materials/slides.typ
index 279d38a73beaab256931717dd4f026768050982f..c89e54ab47789bf857a8706a7b76c60e3573a6e2 100644
--- a/materials/slides.typ
+++ b/materials/slides.typ
@@ -192,7 +192,11 @@
   #let (uncover, only, alternatives) = utils.methods(self)
   #alternatives[
     #align(center)[
-      `git init` & `git commit`
+      `git init`
+    ]
+][
+    #align(center)[
+      `git commit`
     ]
     #fletcher.diagram(
       node-stroke: 1pt,