1393 Stimmen

Entfernen mehrerer Dateien aus einem Git Repo, die bereits von der Festplatte gelöscht wurden

Ich habe ein Git-Repository, aus dem ich vier Dateien gelöscht habe, indem ich rm ( no git rm ), und mein Git-Status sieht folgendermaßen aus:

#    deleted:    file1.txt
#    deleted:    file2.txt
#    deleted:    file3.txt
#    deleted:    file4.txt

Wie entferne ich diese Dateien aus Git, ohne jede einzelne Datei manuell hinzufügen zu müssen?

git rm file1 file2 file3 file4

Idealerweise suche ich nach etwas, das genauso funktioniert wie die git add . tut, wenn das möglich ist.

3 Stimmen

12 Stimmen

@seth, es ist nicht immer bequem zu benutzen git rm Die Entfernung könnte mit einem anderen Tool, einer IDE oder einem Dateimanager erfolgt sein. Visual Studio zum Beispiel kann beim Entfernen/Umbenennen von Dateien eine Qual sein.

75 Stimmen

Igitt, zu fragen, warum jemand nicht die git rm ist ein bisschen wie die Frage, warum sie nicht git vim o git cd . Git sollte einen eingebauten Befehl oder Alias haben, um gelöschte Dateien aus dem Staging zu entfernen, und man sollte nicht in SO nachschlagen oder in der Mittagspause Manpages lesen müssen.

21voto

Sijo Kurian Punkte 466
git ls-files --deleted | xargs git rm 

ist die beste Option, um nur gelöschte Dateien hinzuzufügen.

Hier sind einige andere Optionen.

git add .  => Add all (tracked and modified)/new files in the working tree.

git add -u => Add all modified/removed files which are tracked.

git add -A => Add all (tracked and modified)/(tracked and removed)/new files in the working tree.

git commit -a -m "commit message" - Add and commit modified/removed files which are tracked.

19voto

Obay Punkte 181

Git add -u

-u --update Passt nur auf bereits verfolgte Dateien im Index und nicht auf den Arbeitsbaum. Das bedeutet, dass niemals neue Dateien in den Index aufgenommen werden, aber dass geänderte neue Inhalte von verfolgten Dateien aufgenommen werden und dass Dateien aus dem Index entfernt werden, wenn die entsprechenden Dateien im Arbeitsbaum entfernt wurden.

Wenn no angegeben wird, ist der Standardwert "."; mit anderen Worten, alle verfolgten Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen werden aktualisiert.

0 Stimmen

Die meistgewählte Antwort sagt bereits, dass man git add -u . Woher stammen all die anderen Dinge in Ihrer Antwort, die Dokumentation? Sie sollten auf die Dokumentation verweisen und sie in Blockzitaten wiedergeben, wenn sie das tut.

15voto

Houssem Badri Punkte 2265

Diese einfache Lösung funktioniert bei mir gut:

git rm $(git ls-files --deleted)

0 Stimmen

Ich denke, Sie sollten immer die Git-Shell in Ihrem aktuellen Arbeitsverzeichnis verwenden.

2 Stimmen

Das ist schön und einfach, funktioniert aber nicht mit rekursiven Ordnern.

0 Stimmen

@BehnazChangizi Ich glaube, das tut es, stackoverflow.com/questions/1054044/

14voto

A. Albershteyn Punkte 592
git rm $(git ls-files -d)

Entfernt alle Dateien, die von der Option git ls-files Befehl (-d zeigt nur gelöschte Dateien an). Funktioniert nicht bei Dateien mit Leerzeichen im Dateinamen oder Pfad, ist aber leicht zu merken

12voto

Evan Moran Punkte 3347

Wenn Sie es zu Ihrem .gitconfig dies tun:

[alias]
  rma = !git ls-files --deleted -z | xargs -0 git rm

Dann brauchen Sie nur noch zu laufen:

git rma

1 Stimmen

Und über die cmd-Zeile git config --global alias.rmd '!git ls-files --deleted -z | xargs -0 git rm'

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X