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


Ich habe ein Git Repo, dass ich vier Dateien gelöscht habe rm (nicht  git rm), und mein Git-Status sieht so aus:

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

Wie entferne ich diese Dateien von Git, ohne manuell jede Datei wie folgt durchlaufen zu müssen:

git rm file1 file2 file3 file4

Im Idealfall suche ich nach etwas, das auf die gleiche Weise funktioniert git add . tut, wenn das möglich ist.


1227
2018-01-29 17:18


Ursprung


Antworten:


Für Git 1.x

$ git add -u

Dies weist git an, verfolgte Dateien automatisch zu staffeln - einschließlich des Löschens der zuvor verfolgten Dateien.

Für Git 2.0

Um deinen gesamten Arbeitsbaum zu inszenieren:

$ git add -u :/

Um nur den aktuellen Pfad zu inszenieren:

$ git add -u .

2205
2017-09-10 00:13



git ls-files --deleted -z | xargs -0 git rm 

könnte sein, was du suchst .. es funktioniert für mich ..


1335
2018-02-28 20:21



Sie können verwenden

git add -u

Um die gelöschten Dateien dem Staging-Bereich hinzuzufügen, müssen Sie sie anschließend übernehmen

git commit -m "Deleted files manually"

725
2018-01-29 17:25



Wenn du einfach rennst:

git add -u

git aktualisiert seinen Index, um zu wissen, dass die Dateien, die Sie gelöscht haben, tatsächlich Teil des nächsten Commits sein sollten. Dann können Sie "git commit" ausführen, um diese Änderung zu überprüfen.

Oder, wenn Sie laufen:

git commit -a

Es wird automatisch diese Änderungen (und alle anderen) übernehmen und sie übernehmen.

Aktualisieren: Wenn Sie nur gelöschte Dateien hinzufügen möchten, versuchen Sie Folgendes:

git ls-files --deleted -z | xargs -0 git rm
git commit

354
2017-09-10 00:15



Du suchst wahrscheinlich nach A:

git add -A

Dies ist vergleichbar mit git add -u, fügt aber auch neue Dateien hinzu. Dies entspricht ungefähr dem von hg addremove Befehl (obwohl die Bewegungserkennung automatisch ist).


163
2018-01-29 18:10



Aufführen nur das gelöscht Dateien:

for x in $(git status | grep deleted | awk '{print $2}'); do git rm $x; done

Oder (der Xargs Weg):

git status | awk '/deleted/ {print $2}' | xargs git rm

Sie können alias Ihr bevorzugter Befehl für die spätere Verwendung.


92
2017-11-26 10:34



git rm test.txt

Vor oder nach dem Löschen der eigentlichen Datei.


59
2017-09-10 00:13