Löschen mehrerer Dateien aus dem Git-Repository, die bereits von der Festplatte gelöscht wurden

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

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

So entfernen Sie diese Dateien von Git, ohne die Dateien manuell hinzufügen zu müssen:

 git rm file1 file2 file3 file4 

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

1246
29 янв. Codebeef ist am 29. Januar eingestellt 2009-01-29 20:18 09 um 20:18 2009-01-29 20:18
@ 29 Antworten

Für Git 1.x

 $ git add -u 

Dies bedeutet, dass Git Dateien automatisch verfolgt, einschließlich dem Löschen zuvor aufgezeichneter Dateien.

Für Git 2.0

So erstellen Sie den gesamten Arbeitsbaum:

 $ git add -u :/ 

Um nur den aktuellen Pfad auszuführen:

 $ git add -u . 
2232
10 сент. Antwort von Carl September 10 2009-09-10 03:13 09 um 03:13 Uhr am 2009-09-10 03:13 Uhr
 git ls-files --deleted -z | xargs -0 git rm 
border=0

vielleicht was Sie suchen .. funktioniert es für mich ..

1339
28 февр. Antwort von Varinder am 28. Februar 2011-02-28 23:21 '11 um 23:21 Uhr 2011-02-28 23:21

Sie können verwenden

 git add -u 

Um gelöschte Dateien zum Staging-Bereich hinzuzufügen, kopieren Sie sie

 git commit -m "Deleted files manually" 
726
29 янв. Antwort von Cody Caughlan am 29. Januar 2009-01-29 20:25 09 um 20:25 2009-01-29 20:25

Wenn du gerade rennst:

 git add -u 

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

Oder wenn du rennst:

 git commit -a 

Er nimmt diese Änderungen (und alle anderen Änderungen) automatisch an und korrigiert sie.

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
10 сент. Die Antwort gibt Emil Sit 10 Sep. 2009-09-10 03:15 09 um 03:15 Uhr 2009-09-10 03:15 Uhr

Vielleicht suchen Sie nach -A:

 git add -A 

Dies ist ähnlich wie bei git add -u, fügt aber auch neue Dateien hinzu. Dies entspricht in etwa dem addremove hg addremove (obwohl die Bewegungserkennung automatisch erfolgt).

163
29 янв. Die Antwort wird am 29. Januar von Dustin gegeben . 2009-01-29 21:10 09 um 21:10 Uhr 2009-01-29 21:10

Um nur gelöschte Dateien vorzubereiten:

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

Oder (Xargs-Methode):

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

Sie können den Alias ​​des bevorzugten Befehlssatzes zur bequemen späteren Verwendung verwenden.

92
26 нояб. Die Antwort ist gegeben Saeb Amini 26. November 2011-11-26 13:34 11 um 13:34 2011-11-26 13:34
 git rm test.txt 

Vor oder nach dem Löschen der eigentlichen Datei.

60
10 сент. Antwort Peaker 10. September 2009-09-10 03:13 09 um 03:13 Uhr am 2009-09-10 03:13 Uhr

Wenn Sie git -add mit den Parametern '--all' oder '--update' verwenden, erhalten Sie mehr als Sie möchten. Neue und / oder geänderte Dateien werden ebenfalls zum Index hinzugefügt. Ich habe eine Bash-Alias-Einstellung, wenn ich gelöschte Dateien von git löschen möchte, ohne andere Dateien zu berühren:

 alias grma='git ls-files --deleted -z | xargs -0 git rm' 

Alle Dateien, die aus dem Dateisystem gelöscht wurden, werden dem Index als gelöscht hinzugefügt.

48
31 янв. Die Antwort wird zobie 31. Januar gegeben 2009-01-31 07:50 09 um 07:50 2009-01-31 07:50

Nicht, dass es wirklich wichtig ist, aber ich stimme der gewählten Antwort nicht zu:

 git add -u 

... entfernt Dateien aus dem Index, wenn die entsprechenden Dateien im Arbeitsbaum gelöscht wurden, sie werden jedoch auch dem geänderten neuen Inhalt der überwachten Dateien unterworfen.

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

... auf der anderen Seite gibt es nur gelöschte rm-Dateien, die verfolgt wurden.

Also die letzte, meiner Meinung nach, die beste Option.

38
09 апр. Antwort von Stephan Tual 09 Apr 2012-04-09 14:24 '12 um 14:24 2012-04-09 14:24

Wenn dies die einzigen Änderungen sind, können Sie nur Änderungen vornehmen

 git commit -a 

alle Änderungen festlegen. Dies schließt gelöschte Dateien ein.

28
29 янв. Die Antwort gibt SpoonMeiser vom 29. Januar 2009-01-29 20:29 09 um 20:29 2009-01-29 20:29
 git ls-files --deleted | xargs git rm 

- Die beste Option, um nur gelöschte Dateien hinzuzufügen.

Hier sind einige andere Möglichkeiten.

 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. 
19
01 окт. Antwort von Sijo Kurian 1. Oktober 2012-10-01 22:36 '12 um 22:36 Uhr 2012-10-01 22:36

git add -u

-u --Update Stimmt nur mit bereits verfolgten Dateien im Index überein, nicht mit der Arbeitsstruktur. Dies bedeutet, dass niemals neue Dateien erstellt werden, sondern der neue Inhalt der überwachten Dateien geändert wird und Dateien aus dem Index entfernt, wenn die entsprechenden Dateien im Arbeitsbaum gelöscht wurden.

Wenn nicht, ist der Standardwert "."; Aktualisieren Sie also alle überwachten Dateien im aktuellen Verzeichnis und dessen Unterverzeichnissen.

15
26 авг. Die Antwort ist gegeben, obay 26 aug. 2014-08-26 15:24 14 am 15:24 2014-08-26 15:24

Diese einfache Lösung ist für mich großartig:

 git rm $(git ls-files --deleted) 
14
06 нояб. Die Antwort gibt Husam Bdr 06 Nov. 2015-11-06 16:32 '15 am 16:32 2015-11-06 16:32

Wenn Sie es zu Ihrer .gitconfig hinzufügen .gitconfig , gehen Sie folgendermaßen vor:

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

Dann musst du nur noch laufen:

 git rma 
10
25 июля '12 в 23:47 2012-07-25 23:47 Die Antwort wird von Evan Moran am 25. Juli 12 um 23:47 2012-07-25 23:47 gegeben
 git ls-files --deleted -z | xargs -0 git rm --cached 

Dadurch werden alle gelöschten Dateien gelöscht, die zuvor mit git nachverfolgt wurden. Außerdem wird der Fall behandelt, wenn in Ihrem Namen Leerzeichen enthalten sind.

Abhängig von Ihrer POSIX-Version müssen Sie möglicherweise xargs -0 -r verwenden. xargs -0 -r wird xargs ordnungsgemäß mit null Inhalt beendet.

--cached : Die --cached und --deleted werden zusammen verwendet, um das versehentliche Löschen von Dateien zu verhindern, die noch nicht gelöscht wurden.

8
04 янв. Die Antwort ist Murphy Danger 04 Jan. gegeben. 2014-01-04 23:34 14 am 23:34 2014-01-04 23:34

Probiere es aus.

 -a --all Tell the command to automatically stage files that have been modified and deleted, but new files you have not told Git about are not affected. git add .  git commit -m -a "Your commit" 

oder

 git add --all  git commit -m "Your commit" 
6
09 марта '15 в 18:05 2015-03-09 18:05 Die Antwort ist ilgam 09. März '15 um 18:05 2015-03-09 18:05 gegeben

Verwenden Sie -t zu sehen, welcher Befehl gerade ausgeführt wird.

Ich habe gerade die Wyrder-Antwort geändert, um dasselbe zu tun:

 git ls-files --deleted -z | xargs -t -0 git rm 
6
17 апр. Antwort von Venkateswara Rao am 17. April 2016-04-17 18:00 2016 um 18.00 Uhr 2016-04-17 18:00 Uhr

Das Folgende funktioniert auch, wenn Sie viele Dateien bearbeiten müssen:

 git ls-files --deleted | xargs git rm 

Sie werden wahrscheinlich auch einen Kommentar hinterlassen wollen.

Mehr dazu in: Nützliche Git-Skripte

5
24 мая '13 в 16:45 2013-05-24 16:45 Die Antwort ist gegeben l3x 24. Mai 13 um 16:45 2013-05-24 16:45

Keines der Flags in git -add löscht nur gelöschte Dateien. Wenn alles, was Sie geändert haben, gelöschte Dateien waren, dann sind Sie in Ordnung, aber ansonsten müssen Sie git -status ausführen und die Ausgabe analysieren.

Die Antwort auf Jeremy abarbeiten, das habe ich bekommen:

 git status | sed -s "s/^.*deleted: //" | grep "\(\#\|commit\)" -v | xargs git rm 
  • Dateistatus abrufen
  • Markieren Sie für gelöschte Dateien den Dateinamen.
  • Löschen Sie alle Zeilen, die mit C # beginnen, sowie die Statusleiste mit dem Wort "gelöscht". Ich erinnere mich nicht genau, was es war, und es ist nicht mehr, daher müssen Sie es möglicherweise für verschiedene Situationen ändern. Ich denke, die Gruppierung von Ausdrücken kann GNU-spezifisch sein. Wenn Sie also keine Gnutils verwenden, müssen Sie möglicherweise ein paar Zeilen grep -v hinzufügen.
  • Übertragen Sie Dateien an git rm .

Fügen Sie dies in den Shell-Alias ​​ein ...

5
26 июля '09 в 2:41 2009-07-26 02:41 Die Antwort wird von Xiong Chiamiov am 26. Juli 09 um 2:41 Uhr 2009-07-26 02:41 gegeben

Wie erwähnt

 git add -u 

löscht gelöschte Dateien zum Löschen, aber auch die geänderten Dateien zum Aktualisieren.

Geänderte Dateien können Sie deaktivieren

 git reset HEAD <path> 

Wenn Sie möchten, dass Ihre Verpflichtungen organisiert und sauber sind.
HINWEIS: Gelöschte Dateien können auch gelöscht werden. Seien Sie daher mit diesen Platzhaltern vorsichtig.

4
21 февр. Die Antwort wird DarkNeuron 21 Feb. gegeben. 2012-02-21 21:43 '12 am 21:43 2012-02-21 21:43
 git commit -m 'commit msg' $(git ls-files --deleted) 

Es hat für mich funktioniert, nachdem ich die Dateien gelöscht habe.

4
05 авг. Die Antwort ist in Tschad 05 gegeben. 2014-08-05 17:40 14 um 17:40 2014-08-05 17:40

Ich brauchte das gleiche und benutzte die git gui-Schaltfläche "geändert". er fügt auch alles hinzu.

Und nach dem "Bühnenwechsel" habe ich ein "Commit" gemacht ...

so wird mein arbeitsverzeichnis wieder gelöscht.

3
15 нояб. Die Antwort gibt Serdar am 15. November. 2011-11-15 17:29 '11 am 17:29 2011-11-15 17:29

Sie können git add -u <filenames> , um nur gelöschte Dateien zu platzieren.

Wenn Sie beispielsweise die templates/*.tpl Dateien gelöscht haben, verwenden Sie git add -u templates/*.tpl .

-u ist erforderlich, um auf Dateien zuzugreifen, die im Repository vorhanden sind, aber nicht mehr im Arbeitsverzeichnis vorhanden sind. Andernfalls sucht git add standardmäßig nach Dateien im Arbeitsverzeichnis. Wenn Sie die Dateien angeben, die Sie dort gelöscht haben, werden sie nicht gefunden.

2
07 марта '13 в 4:29 2013-03-07 04:29 Die Antwort wird von thomasrutter 7. März 13 um 04:29 2013-03-07 04:29 gegeben

(Eine weitere Änderung)

Ich wollte alles löschen, was bereits aus den Dateien der Festplatte gelöscht wurde, aber aus einem bestimmten Ordner, die anderen Ordner jedoch intakt lassen. Folgendes hat für mich gearbeitet:

 git ls-files --deleted | grep <folder-name> | xargs git rm 
1
23 нояб. Antwort gegeben städtischen 23. November 2016-11-23 13:32 '16 um 13:32 Uhr 23.11.2016 13:32 Uhr

so etwas wie

 git status | sed -s "s/^.*deleted: //" | xargs git rm 

kann es tun

1
29 янв. Jeremy French antwortet am 29. Januar 2009-01-29 20:28 09 um 20:28 2009-01-29 20:28

Hinzufügen eines Systemalias zum Ablegen gelöschter Dateien als " rm-all

UNIX- alias rm-all='git rm $(git ls-files --deleted)'

WINDOWS doskey rm-all=bash -c "git rm $(git ls-files --deleted)"

Hinweis

Windows muss bash installiert haben.

1
19 февр. Die Antwort wird am 19. Februar von Haris Krajina gegeben . 2014-02-19 15:16 14 am 15:16 2014-02-19 15:16

Für ein visuelles Studio-Projekt

 'git ls-files --deleted | sed 's/(.*)/"\1"/'| xargs git rm' 

Dies ist nützlich, wenn der Pfad der Remote-Datei ein Leerzeichen enthält

0
04 февр. Antwort von Sawyer am 04. Februar. 2014-02-04 18:34 '14 um 18:34 2014-02-04 18:34
 git rm $(git ls-files -d) 

Entfernt alle Dateien, die im git ls-files (-d zeigt nur gelöschte Dateien). Funktioniert nicht für Dateien mit Leerzeichen im Dateinamen oder Pfad. Denken Sie jedoch daran

0
10 дек. Antwort gegeben A. Albershteyn 10 Dez. 2018-12-10 11:19 '18 at 11:19. 2018-12-10 11:19

Die flexibelste Lösung, die ich bisher gefunden habe, ist

 git cola 

Wählen Sie alle gelöschten Dateien aus, die ich ausführen möchte.

(Hinweis: Normalerweise mache ich die gesamte Befehlszeile in git, aber git behandelt gelöschte Dateien etwas umständlich.)

-1
03 окт. Die Antwort wird von Broes De Cat am 3. Oktober gegeben. 2012-10-03 17:28 '12 am 17:28 2012-10-03 17:28

Weitere Fragen zu Tags: oder Ask a Question