Auschecken mit reset und checkout
Zunächst stellen wir mit den Befehlen
echo "Version 4" > test-datei.txt
git add test-datei.txt
echo "Version 5" > test-datei.txt
den folgenden Ausgangszustand unseres Projektes her:
HEAD: Version 3
Index: Version 4
Arbeitsverzeichnis: Version 5
Auschecken vom lokalen Repository in den Index
Nun können wir die Änderung im Index verwerfen, indem wir diesen mit dem Inhalt des lokalen Repositories überschreiben:
git reset -- test-datei.txt
Anschließend sollte der Zustand des Projektes wie folgt sein:
HEAD: Version 3
Index: Version 3
Arbeitsverzeichnis: Version 5
Auschecken vom Index ins Arbeitsverzeichnis
Nun überschreiben wir auch noch die Datei im Arbeitsverzeichnis mit dem Inhalt des Index' durch den Befehl:
git checkout -- test-datei.txt
Damit hat unser Projekt nun wieder den Zustand:
HEAD: Version 3
Index: Version 3
Arbeitsverzeichnis: Version 3
Auschecken vom lokalen Repository in Index und Arbeitsverzeichnis gleichzeitig
Mit dem folgende Befehl kann die Testdatei auch vom lokales Repository gleichzeitig sowohl in den Index als auch ins Arbeitsverzeichnis kopiert werden:
git checkout HEAD -- test-datei.txt
Verwerfen der letzten Commits
Der Befehl git reset kann auch zum Verwerfen der letzten Commits verwendet werden. Zum Beispiel verwirft der folgende Befehl die letzten 2 Commits:
git reset --hard HEAD~2
Die Option --hard bewirkt, dass hierbei auch sofort die Version 2 Positionen vor dem alten HEAD ausgecheckt wird. Also Vorsicht, denn sowohl Index als auch Arbeitsverzeichnis werden dabei mit der neu ausgecheckten Version überschrieben!
Übersicht und Wirkungsweise der Befehle zum Ein- und Auschecken
Zusammenfassend ergibt sich folgende Übersicht der Wirkungsweise der Befehle zum Ein- und Auschecken zwischen lokalem Repository, Index und Arbeitsverzeichnis:Interaktive Visualisierung
Auf der Seite Visualizing Git Concepts with D3 man interaktiv viusuell aufbereitet verfolgen, wie sich das Auschecken auf den Baum im lokalen Repository auswirkt.