git rm

Grundlegende Snapshots

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>...
[ ] optional| oder<arg> Platzhalter... wiederholbar--flag Option

Optionen

Klicke auf eine Option, um sie aufzuklappen

Einsteiger (2)

Entfernt die Datei nur aus dem Staging-Bereich. Die Datei bleibt als unverfolgte Datei auf der Platte.

EmpfohlenEine Datei (z. B. versehentlich committet) nicht mehr verfolgen, ohne sie zu löschen

Beispiel

git rm --cached .env

Löscht auch, wenn die Datei nicht committete Änderungen hat. Diese Änderungen gehen verloren.

Bei BedarfLöscht nicht committete Änderungen mit der Datei — sie sind verloren

Beispiel

git rm -f app.js

Die richtige Option wählen

Wege, eine Datei zu entfernen

Was auf der Platte und in Git passiert

BefehlAuf der PlatteIm nächsten Commit
rm fileGelöschtNoch da, bis du die Löschung vormerkst
git rm fileGelöschtEntfernt
git rm --cached fileBehaltenEntfernt (die Datei wird unverfolgt)

Beispiele

Eine Datei löschen

git rm old.js

Löscht old.js und merkt die Löschung vor.


Nicht mehr verfolgen

git rm --cached .env

Git 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

1
git rm --cached .env

Nicht mehr verfolgen, auf der Platte behalten

2
echo ".env" >> .gitignore

Ab jetzt ignorieren

3
git add .gitignore

Die Ignore-Regel vormerken

4
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

A:

Merke die Löschung mit git rm <file> oder git add <file> vor und committe dann.

A:

Vor dem Commit: git restore --staged --worktree <file>. Danach: git restore --source=<commit> <file>.

A:

Nein. Frühere Commits behalten sie; nur der nächste Commit lässt sie weg.