Zum Inhalt springen

git rm

Beschreibung des git rm-Befehls

Der git rm-Befehl entfernt bestimmte Dateien oder eine Gruppe von Dateien aus einem Git-Repository. Die Hauptfunktion von git rm besteht darin, verfolgte Dateien aus dem Index zu entfernen. git rm kann auch verwendet werden, um Dateien sowohl aus dem Staging-Index als auch aus dem Arbeitsverzeichnis zu entfernen. Eine Datei kann jedoch nicht ausschließlich aus dem Arbeitsverzeichnis entfernt werden. Es sei erwähnt, dass der git rm-Befehl keine Branches entfernt. Hinweis: git rm funktioniert nur mit verfolgten Dateien. Der Befehl schlägt fehl, wenn Sie versuchen, eine nicht verfolgte Datei zu entfernen.

git revert1

Verwendung des git rm-Befehls

<file>…​Gibt an, welche Dateien entfernt werden sollen.
-f --forceÜberspringt die Sicherheitsprüfung, die sicherstellt, dass die Dateien in HEAD mit dem Inhalt des Staging-Indexes und des Arbeitsverzeichnisses übereinstimmen.
-n --dry-runFührt den git rm-Befehl aus, entfernt die Dateien jedoch nicht tatsächlich. Es wird nur ausgegeben, welche Dateien entfernt worden wären.
-rDies ist eine Abkürzung für 'rekursiv'. Im rekursiven Modus entfernt git rm ein Zielverzeichnis und seinen gesamten Inhalt.
--Stellt eine klare Trennung zwischen einer Liste von Dateinamen und den an git rm übergebenen Argumenten her.
--cachedGibt an, dass die Löschung nur im Staging-Index erfolgen soll. Dateien im Arbeitsverzeichnis bleiben unverändert.
--ignore-unmatchBeendet den Befehl mit dem Status 0, auch wenn keine Dateien übereinstimmen. Dies ist ein Unix-Statuscode.
-q --quietUnterdrückt die Ausgabe des git rm-Befehls. Normalerweise gibt git rm eine Zeile pro entfernter Datei aus.

Rückgängigmachen von git rm

Der git rm-Befehl aktualisiert den Staging-Index und das Arbeitsverzeichnis. Diese Änderungen werden erst übernommen, wenn ein neuer Commit erstellt wird. Sie können mit Git-Befehlen rückgängig gemacht werden. Um die Löschung aus dem Staging zu nehmen (die Datei bleibt im Arbeitsverzeichnis gelöscht), verwenden Sie: git reset HEAD

bash
git reset HEAD

Um die Datei vollständig auf ihren neuesten Stand im Staging-Index und im Arbeitsverzeichnis wiederherzustellen, verwenden Sie den modernen git restore-Befehl: git restore

bash
git restore <file>

(Hinweis: git checkout . ist für das Wiederherstellen von Dateien veraltet.)

Um eine Datei nur aus dem Staging-Index zu entfernen (sie bleibt im Arbeitsverzeichnis), verwenden Sie das Flag --cached: git rm --cached

bash
git rm --cached <file>

Verwenden Sie git reflog, um eine Referenz vor der Ausführung von git rm zu finden, falls git rm ausgeführt und ein neuer Commit erstellt wurde, der die Löschung übernimmt.

git rm vs. rm

Wenn ein gewöhnlicher Shell-rm-Befehl auf eine verfolgte Datei ausgeführt wird, erkennt das Git-Repository dies und aktualisiert nur das Arbeitsverzeichnis, um die Löschung widerzuspiegeln. Um die Änderungen in den Staging-Index zu übernehmen, muss zusätzlich der git add-Befehl ausgeführt werden. Der git rm-Befehl aktualisiert sowohl den Staging-Index als auch das Arbeitsverzeichnis mit der Löschung.

Beispiele

Betrachten wir das folgende Beispiel:

git rm mit Wildcards

bash
git rm folder/\*.txt

Wir verwenden eine Wildcard-Dateiglob, um alle *.txt-Dateien zu entfernen. Diese Dateien befinden sich direkt im Ordner-Verzeichnis. Wir setzen einen Backslash vor das Sternchen, um zu verhindern, dass die Shell die Wildcard bereits auflöst. Anschließend erweitert die Wildcard die Pfadnamen von Dateien und Unterverzeichnissen.

git rm -f

bash
git rm -f git-*.sh

Die Force-Option wird im Beispiel verwendet, um die Zieldateien aus dem Arbeitsverzeichnis und dem Staging-Index zu entfernen.

Entfernen von Dateien, die nicht mehr im Dateisystem existieren

Wenn Sie alle gelöschten Dateien als Teil des folgenden Commits erfassen möchten, stagen Sie die Löschungen zunächst mit `git add -u` und führen Sie anschließend `git commit` aus.

Wenn Sie jedoch alle Dateien, die mit dem Shell-Befehl rm gelöscht wurden, kontinuierlich entfernen möchten, verwenden Sie den folgenden Befehl. Er erstellt eine Liste aller im Arbeitsverzeichnis gelöschten Dateien und leitet sie an git rm --cached weiter, um den Staging-Index zu aktualisieren:

git rm --cached

bash
git diff --name-only --diff-filter=D -z | xargs -0 git rm --cached

Practice

Welche Funktionen und Optionen hat der 'git rm'-Befehl?

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.