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.

10voto

jonathan3692bf Punkte 1278
git ls-files --deleted -z | xargs -0 git rm --cached

Dies entfernt alle gelöschten Dateien, die zuvor von Git verfolgt wurden, und behandelt auch den Fall, dass Ihre Dateinamen Leerzeichen enthalten.

Abhängig von Ihrer POSIX-Variante müssen Sie möglicherweise xargs -0 -r : Dies wird dazu führen, dass xargs zu beenden, wenn Null-Inhalt über die Pipeline übertragen wird.

EDITAR: --cached y --deleted werden zusammen verwendet, um zu verhindern, dass versehentlich Dateien gelöscht werden, die noch nicht gelöscht wurden.

9voto

DarkNeuron Punkte 6922

Wie erwähnt

git add -u

die entfernten Dateien zum Löschen, ABER AUCH die geänderten Dateien zum Aktualisieren.

Um die geänderten Dateien freizugeben, können Sie Folgendes tun

git reset HEAD <path>

wenn Sie Ihre Commits organisiert und sauber halten wollen.
NOTE : Dies könnte auch die gelöschten Dateien wiederherstellen, seien Sie also vorsichtig mit diesen Platzhaltern.

0 Stimmen

IMO ist das Zurücksetzen die beste Lösung, da Sie die Datei auch hätten löschen können. Es ist zu schade, dass es 1000 Upvotes für add gibt.

7voto

ilgam Punkte 3588

Weisen Sie den Befehl an, geänderte und gelöschte Dateien automatisch bereitzustellen. Neue Dateien, die Sie Git nicht mitgeteilt haben, sind davon nicht betroffen:

-a
--alle

git add . && git commit -m -a "Your commit"

o

git add --all && git commit -m "Your commit"

1 Stimmen

Git add --all && git commit -m "Ihre Übergabe" Dies funktionierte bei mir unter Windows-7 mit der Git-Bash-Befehlsshell.

1 Stimmen

Der folgende Befehl funktionierte bei mir unter Windows-7 mit der Befehlsshell Git bash: $ git add --all && git commit -m "Eigenschaftsdateien entfernen" [master 58c41ac] remove property files 1 Datei geändert, 9 Löschungen(-) ... Um diese Änderungen in das entfernte Repository zu übertragen, führen Sie aus: $ git push origin .. Zählen der Objekte: 10, fertig.

6voto

l3x Punkte 29224

Die folgende Methode funktioniert auch, wenn Sie viele Dateien zu verarbeiten haben:

git ls-files --deleted | xargs git rm

Wahrscheinlich möchten Sie sich auch mit einem Kommentar verpflichten.

Einzelheiten siehe: Nützliche Git-Skripte

6voto

Venkateswara Rao Punkte 4922

Bitte verwenden Sie -t um zu sehen, welcher Befehl tatsächlich ausgeführt wird

Ich habe gerade die Antwort von Virender so geändert, dass sie dasselbe tut:

git ls-files --deleted -z | xargs -t -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