Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

6.5 Versionsgeschichte und Historie

Humboldt-Universität zu Berlin, Institut für Bibliotheks- und Informationswissenschaft

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 log

Beispiel-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ügt

Bestandteile eines Log-Eintrags:

Kompakte Log-Ansicht

Die Standard-Ausgabe ist manchmal zu ausführlich. Eine kompaktere Darstellung:

git log --oneline

Ausgabe:

e4f5g6h (HEAD -> main) Begrüßungsfunktion hinzugefügt
a1b2c3d Erste Version: Hallo-Welt-Skript hinzugefügt

Jetzt 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 --graph

Unterschiede 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 diff

Beispiel: 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:

Unterschiede in der Staging Area

Um Änderungen zu sehen, die bereits mit git add zur Staging Area hinzugefügt wurden:

git diff --staged

oder

git diff --cached

Unterschiede zwischen Commits

Vergleichen Sie zwei Commits miteinander:

git diff a1b2c3d e4f5g6h

Oder vergleichen Sie den aktuellen Zustand mit einem früheren Commit:

git diff a1b2c3d

Unterschiede für eine bestimmte Datei

git diff hallo.py

Zeigt 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.py

2. 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.py

Die 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 a1b2c3d

Was 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 e4f5g6h

Git 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

BefehlZweckWirkung
git restore <datei>Änderungen im Working Directory verwerfenDatei auf letzten Commit-Stand zurücksetzen
git restore --staged <datei>Datei aus Staging Area entfernenBleibt geändert, aber nicht mehr staged
git revert <commit>Commit rückgängig machenErstellt neuen Commit, der Änderungen zurücknimmt
git resetHistorie zurücksetzenVorsicht! 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 * b

Option 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 anpassen

Visualisierung 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ügt

Viele IDEs und Git-GUIs (z.B. GitKraken, SourceTree, VS Code) bieten grafische Darstellungen der Historie.

Zusammenfassung

Die wichtigsten Befehle zur Arbeit mit der Historie:

BefehlBeschreibung
git logCommit-Historie anzeigen
git log --onelineKompakte 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.