Einführung
Fast jede Git-Sitzung folgt demselben dreistufigen Rhythmus: Bearbeiten Sie Dateien in Ihrem Working Tree, stagen Sie die Änderungen, die Sie aufzeichnen möchten, und committen Sie sie in die Historie. Diese Schleife zu beherrschen ist die Grundlage von allem anderen.
Die drei Bereiche
- Working Tree: Dateien auf der Festplatte, die Sie mit Ihrem Editor bearbeiten.
- Index (auch Staging Area genannt): Ein Snapshot dessen, was in den nächsten Commit fließen wird.
- Repository: Die committete Historie, gespeichert in
.git.
Ein vollständiger Zyklus
- Bearbeiten Sie eine Datei in Ihrem Editor.
- Führen Sie
git statusaus, um zu sehen, was sich geändert hat. - Führen Sie
git diffaus, um die Änderungen zu prüfen. - Stagen Sie mit
git add. - Committen Sie mit
git commit.
echo "hello" >> notes.txt
git status
git diff
git add notes.txt
git diff --staged
git commit -m "Add greeting to notes"
Selektives Stagen
Sie können einzelne Dateien, Glob-Muster oder sogar Teile einer Datei im interaktiven Modus stagen:
git add notes.txt readme.md
git add "src/*.py"
git add -p notes.txt # Patch-Modus: ja/nein pro Hunk
Der Patch-Modus ist unschätzbar, wenn Sie gemischte Änderungen haben, die Sie auf separate Commits aufteilen möchten.
Den Index überspringen
Die Abkürzung git commit -a staged und committet alle verfolgten Dateien in einem Schritt. Sie fügt keine neuen (untracked) Dateien hinzu:
git commit -am "Quick fix"
Gute Commits schreiben
Eine Commit-Nachricht hat eine kurze Betreffzeile (etwa 50 Zeichen) und einen optionalen Body, der das Warum erklärt. Führen Sie git commit ohne -m aus, um Ihren Editor zu öffnen:
git commit
# Editor öffnet sich
# Betreffzeile
#
# Längere Erklärung...
Atomare Commits
Ein guter Commit erfasst eine logische Änderung. Bauen Sie ihn bewusst auf: Stagen Sie genau die Hunks, die zusammengehören, mit git add -p, und committen Sie dann. Wenn Sie sich dabei ertappen, einen Commit mit "und" in der Betreffzeile zu beschreiben ("Fix login and refactor logger"), sollten es vermutlich zwei Commits sein.
git add -p src/auth.py # nur den Login-Fix stagen
git commit -m "Fix login redirect on expired session"
git add -p src/logger.py
git commit -m "Refactor logger to use structured fields"
Atomare Commits machen git bisect, git revert und Code-Reviews später dramatisch einfacher.
Häufige Fehler
Vergessen, neue Dateien per git add hinzuzufügen, und überrascht sein von einem "leeren" Commit. git status sagt Ihnen immer die Wahrheit; lesen Sie es vor dem Committen. Eine weitere Falle: Die Verwendung von git commit -am, wenn Sie neue untracked Dateien haben, was diese stillschweigend zurücklässt. Schließlich: Das Committen generierter Dateien (Build-Output, node_modules, IDE-Einstellungen) verschmutzt die Historie und verlangsamt Klone; fügen Sie sie zu .gitignore hinzu, bevor Sie stagen. Im Zweifelsfall führen Sie git diff --staged aus, um genau zu sehen, was Ihr nächster Commit enthalten wird.