Einer der großen Vorteile von Git ist die Möglichkeit, die gesamte Entwicklungsgeschichte eines Projekts nachzuvollziehen. In diesem Kapitel lernen Sie, wie Sie durch die Historie navigieren und Änderungen betrachten können.
Die Historie anzeigen: git log¶
Der Befehl git log zeigt alle bisherigen Commits:
git logBeispiel-Ausgabe:
commit e4f5g6h1i2j3k4l5m6n7o8p9q0r1s2t3u4v5w6x7 (HEAD -> main)
Author: Erika Mustermann <erika.mustermann@example.com>
Date: Tue Oct 17 14:23:45 2025 +0200
Begrüßungsfunktion hinzugefügt
commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0
Author: Erika Mustermann <erika.mustermann@example.com>
Date: Tue Oct 17 13:15:20 2025 +0200
Erste Version: Hallo-Welt-Skript hinzugefügtBestandteile eines Log-Eintrags:
Commit-Hash: Eindeutige ID (lange Hexadezimalzahl)
Author: Name und E-Mail der Person, die den Commit erstellt hat
Date: Zeitstempel
Commit-Message: Beschreibung der Änderung
(HEAD -> main): Zeigt an, wo Sie sich gerade befinden
Kompakte Log-Ansicht¶
Die Standard-Ausgabe ist manchmal zu ausführlich. Eine kompaktere Darstellung:
git log --onelineAusgabe:
e4f5g6h (HEAD -> main) Begrüßungsfunktion hinzugefügt
a1b2c3d Erste Version: Hallo-Welt-Skript hinzugefügtJetzt sehen Sie nur die kurzen Hashes und die Commit-Messages.
Weitere nützliche Log-Optionen¶
# Letzte 5 Commits anzeigen
git log -5
# Graphische Darstellung von Branches
git log --oneline --graph --all
# Mit Statistik (welche Dateien geändert wurden)
git log --stat
# Änderungen in kompakter Form
git log --oneline --decorate --graphUnterschiede anzeigen: git diff¶
Der Befehl git diff zeigt Unterschiede zwischen verschiedenen Versionen.
Änderungen im Working Directory¶
Um zu sehen, welche Änderungen Sie seit dem letzten Commit gemacht haben:
git diffBeispiel: Sie ändern hallo.py:
# Vorher:
print('Hallo Git!')
# Nachher:
print('Hallo Git!')
print('Versionskontrolle ist super!')git diff zeigt:
diff --git a/hallo.py b/hallo.py
index a1b2c3d..e4f5g6h 100644
--- a/hallo.py
+++ b/hallo.py
@@ -1 +1,2 @@
print('Hallo Git!')
+print('Versionskontrolle ist super!')Interpretation:
Grün/+: Hinzugefügte Zeilen
Rot/-: Gelöschte Zeilen
Die Zeile mit
@@zeigt, wo im File die Änderung ist
Unterschiede in der Staging Area¶
Um Änderungen zu sehen, die bereits mit git add zur Staging Area hinzugefügt
wurden:
git diff --stagedoder
git diff --cachedUnterschiede zwischen Commits¶
Vergleichen Sie zwei Commits miteinander:
git diff a1b2c3d e4f5g6hOder vergleichen Sie den aktuellen Zustand mit einem früheren Commit:
git diff a1b2c3dUnterschiede für eine bestimmte Datei¶
git diff hallo.pyZeigt nur Änderungen in hallo.py.
Zu früheren Versionen zurückkehren¶
Git erlaubt es Ihnen, jederzeit zu einer früheren Version zurückzukehren. Es gibt verschiedene Möglichkeiten:
1. Eine Datei wiederherstellen: git restore¶
Szenario: Sie haben hallo.py geändert, aber die Änderungen gefallen Ihnen
nicht. Sie möchten zur letzten committed Version zurück.
git restore hallo.py2. Eine Datei aus der Staging Area entfernen¶
Szenario: Sie haben eine Datei mit git add hinzugefügt, möchten sie aber
doch nicht committen.
git restore --staged hallo.pyDie Datei bleibt geändert, wird aber aus der Staging Area entfernt.
3. Zu einem früheren Commit wechseln: git checkout¶
Sie können sich einen früheren Zustand des Projekts ansehen:
git checkout a1b2c3dWas passiert? Alle Dateien werden auf den Zustand von Commit a1b2c3d zurückgesetzt.
Zurück zum neuesten Stand:
git checkout main(oder der Name Ihres Branches)
4. Einen alten Zustand wiederherstellen (neuer Commit)¶
Szenario: Sie möchten eine Datei auf einen früheren Stand zurücksetzen, aber als neuen Commit speichern.
# Datei auf Stand von Commit a1b2c3d zurücksetzen
git checkout a1b2c3d -- hallo.py
# Als neuen Commit speichern
git commit -m "Datei auf früheren Stand zurückgesetzt"Das -- trennt Commit-Hashes von Dateinamen.
Einen Commit rückgängig machen: git revert¶
Szenario: Ein Commit hat einen Fehler eingeführt. Sie möchten ihn rückgängig machen, aber die Historie nicht verändern.
git revert e4f5g6hGit erstellt einen neuen Commit, der die Änderungen von e4f5g6h
rückgängig macht. Die Historie bleibt erhalten – das ist wichtig, wenn Sie
bereits mit anderen Personen zusammenarbeiten.
Vergleich: restore vs. revert vs. reset¶
| Befehl | Zweck | Wirkung |
|---|---|---|
git restore <datei> | Änderungen im Working Directory verwerfen | Datei auf letzten Commit-Stand zurücksetzen |
git restore --staged <datei> | Datei aus Staging Area entfernen | Bleibt geändert, aber nicht mehr staged |
git revert <commit> | Commit rückgängig machen | Erstellt neuen Commit, der Änderungen zurücknimmt |
git reset | Historie zurücksetzen | Vorsicht! Verändert Historie (für Fortgeschrittene) |
Praktisches Beispiel: Fehler korrigieren¶
Angenommen, Sie haben einen Fehler gemacht:
# Commit 1: Funktion hinzugefügt
def addiere(a, b):
return a + b
# Commit 2: Fehler! Falsche Funktion implementiert
def subtrahiere(a, b):
return a + b # Bug: sollte a - b sein!
# Commit 3: Weitere Funktionen
def multipliziere(a, b):
return a * bOption 1: Neuer Commit mit Bugfix
# Fehler in datei.py korrigieren
# Dann:
git add datei.py
git commit -m "Bugfix: Subtraktion korrigiert"Option 2: Den fehlerhaften Commit reverten
git revert <commit-hash-von-commit-2>
# Editor öffnet sich, Commit-Message anpassenVisualisierung der Versionsgeschichte¶
Mit grafischen Tools können Sie die Historie besser visualisieren:
# Terminal-basiert
git log --oneline --graph --all --decorate
# Beispiel-Ausgabe:
* e4f5g6h (HEAD -> main) Begrüßungsfunktion hinzugefügt
* a1b2c3d Erste Version: Hallo-Welt-Skript hinzugefügtViele IDEs und Git-GUIs (z.B. GitKraken, SourceTree, VS Code) bieten grafische Darstellungen der Historie.
Zusammenfassung¶
Die wichtigsten Befehle zur Arbeit mit der Historie:
| Befehl | Beschreibung |
|---|---|
git log | Commit-Historie anzeigen |
git log --oneline | Kompakte Historie |
git diff | Änderungen anzeigen (Working Directory) |
git diff --staged | Änderungen in Staging Area anzeigen |
git restore <datei> | Änderungen verwerfen |
git restore --staged <datei> | Aus Staging Area entfernen |
git checkout <commit> | Zu altem Commit wechseln (nur ansehen) |
git revert <commit> | Commit rückgängig machen (neuer Commit) |
Im nächsten Kapitel lernen Sie, wie Sie mit Remote-Repositories (GitHub, GitLab) arbeiten können.