git rm
Entfernt Dateien aus dem Arbeitsverzeichnis und dem Staging-Bereich
Der Befehl 'git rm' löscht eine verfolgte Datei und merkt die Löschung vor, sodass der nächste Commit sie nicht mehr enthält. Ältere Commits behalten die Datei. Mit --cached hört Git auf, die Datei zu verfolgen, lässt sie aber auf deiner Platte — die übliche Lösung für eine versehentlich committete Datei. git rm weigert sich, eine Datei mit nicht committeten Änderungen zu löschen, außer du ergänzt -f.
Syntax
git rm [-f | --force] [-n] [-r] [--cached] [-q] [--] <pathspec>...Optionen
Die richtige Option wählen
Wege, eine Datei zu entfernen
Was auf der Platte und in Git passiert
| Befehl | Auf der Platte | Im nächsten Commit |
|---|---|---|
rm file | Gelöscht | Noch da, bis du die Löschung vormerkst |
git rm file | Gelöscht | Entfernt |
git rm --cached file | Behalten | Entfernt (die Datei wird unverfolgt) |
Beispiele
Eine Datei löschen
git rm old.jsLöscht old.js und merkt die Löschung vor.
Nicht mehr verfolgen
git rm --cached .envGit vergisst .env; die Datei bleibt auf der Platte.
Einen Ordner löschen
git rm -r build/Löscht einen Ordner und seine verfolgten Dateien.
Workflow-Beispiele
git rm --cached .envNicht mehr verfolgen, auf der Platte behalten
echo ".env" >> .gitignoreAb jetzt ignorieren
git add .gitignoreDie Ignore-Regel vormerken
git commit -m "Stop tracking .env"Commit
Fehlerbehebung
error: the following file has local modifications
Ursache: Die Datei hat nicht committete Änderungen
Committe oder stashe sie, nutze --cached, um die Datei zu behalten, oder -f, um sie zu verwerfen
fatal: not removing 'dir' recursively without -r
Ursache: Der Pfad ist ein Ordner
Ergänze -r: git rm -r dir
Ein Geheimnis ist noch in der Historie
Ursache: git rm wirkt sich nur auf künftige Commits aus
Tausche das Geheimnis aus; Historie umschreiben braucht ein Werkzeug wie git filter-repo
Tipps & Stolperfallen
Best Practices
- ✓Nutze git rm statt rm + git add: ein Schritt, nichts vergessen.
- ✓Trage unverfolgte Dateien direkt nach git rm --cached in .gitignore ein.
- ✓Behandle ein committetes Geheimnis als geleakt: ändere es, auch nachdem die Datei entfernt ist.
Häufige Fehler
- ✗Eine Datei mit einfachem rm löschen und vergessen, die Löschung vorzumerken.
- ✗git rm nutzen, obwohl du die Datei nur nicht mehr verfolgen wolltest: ergänze --cached, um sie zu behalten.
- ✗Erwarten, dass git rm ein Geheimnis aus der Historie entfernt — ältere Commits enthalten es weiterhin.
FAQ
Merke die Löschung mit git rm <file> oder git add <file> vor und committe dann.
Vor dem Commit: git restore --staged --worktree <file>. Danach: git restore --source=<commit> <file>.
Nein. Frühere Commits behalten sie; nur der nächste Commit lässt sie weg.