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.

2373voto

carl Punkte 48262

Für Git 1.x

$ git add -u

Dies weist Git an, die verfolgten Dateien automatisch zu verlagern - einschließlich des Löschens der zuvor verfolgten Dateien.

Für Git 2.0

Um Ihren gesamten Arbeitsbaum in Szene zu setzen:

$ git add -u :/

Um nur den aktuellen Pfad einzustellen:

$ git add -u .

144 Stimmen

Beachten Sie, dass dadurch die alle geänderte, nachverfolgte Dateien - gelöschte und aktualisierte.

20 Stimmen

@beanland, Sie müssen nur den Pfad zu der spezifischen Datei angeben, die Sie ändern möchten, wenn Sie nicht wollen, dass alle Dateien abgefragt werden. z.B. git add -u [Pfad]

28 Stimmen

Auch git add -u folder/ um diesen Vorgang in einem Ordner auszuführen

1395voto

Varinder Punkte 13935
git ls-files --deleted -z | xargs -0 git rm 

könnte das sein, wonach Sie suchen. Es funktioniert bei mir.

6 Stimmen

Für Windows versuchen Sie, den folgenden Alias ohne Anführungszeichen in Ihre Konfiguration einzufügen, wie oben von Evan Moran angegeben 'remove = !git ls-files --deleted -z | xargs -0 git rm'

0 Stimmen

Das ist eigentlich die richtige Antwort, da -u auch geänderte getrackte Dateien in den Index aufnimmt.

22 Stimmen

Seien Sie vorsichtig bei Dateien mit Leerzeichen in ihrem Namen

754voto

Cody Caughlan Punkte 31774

Sie können verwenden

git add -u

So fügen Sie die gelöschten Dateien dem Staging-Bereich hinzu und übertragen sie anschließend

git commit -m "Deleted files manually"

104 Stimmen

Bitte beachten Sie Google-Nutzer: Es fügt die geänderten getrackten Dateien auch dem Staging-Bereich hinzu.

5 Stimmen

Führen Sie diesen Befehl nur aus, wenn Sie die Dateien gerade entfernt haben und sie sofort wieder bereitstellen möchten.

2 Stimmen

Ich kann die Datei nicht aus dem Bitbucket-Repository entfernen]

361voto

Emil Sit Punkte 21922

Wenn Sie einfach laufen:

git add -u

git wird seinen Index aktualisieren, um zu wissen, dass die von Ihnen gelöschten Dateien Teil der nächsten Übertragung sein sollen. Dann können Sie "git commit" ausführen, um die Änderung einzuchecken.

Oder, wenn Sie laufen:

git commit -a

Diese Änderungen (und alle anderen) werden automatisch übernommen und festgeschrieben.

Update : Wenn Sie nur gelöschte Dateien hinzufügen möchten, versuchen Sie es:

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

2 Stimmen

Richtig, git commit -a tut, was ich will, außer dass ich in einigen Fällen Dateien habe, die ich nicht übertragen möchte, so dass ich die Übertragung manuell vorbereiten möchte.

2 Stimmen

Commit -a führt im Wesentlichen zuerst ein "add -u" aus; es aktualisiert den Index mit allen Änderungen an bekannten Dateien (seien es Löschungen oder einfache Änderungen). Sie können natürlich auch spezifischer vorgehen und nur die Dateien hinzufügen/ändern, die Sie wollen. git.or.cz/gitwiki/ kann hilfreich sein.

2 Stimmen

Der Befehlssatz unterhalb von "Update: " funktionierte einwandfrei. Danke!

171voto

Dustin Punkte 85400

Sie suchen wahrscheinlich nach -A:

git add -A

Dies ist ähnlich wie git add -u, fügt aber auch neue Dateien hinzu. Dies ist ungefähr das Äquivalent zu hg's addremove Befehl (obwohl die Erkennung der Bewegung automatisch erfolgt).

11 Stimmen

Eine kurze Anmerkung am Rande: Die Verwendung von -u beschränkt das Hinzufügen auf verfolgte Dateien und -a schließt auch nicht verfolgte Dateien ein. Ich dachte nur, ich würde auf den Unterschied hinweisen.

0 Stimmen

In diesem Stadium können Sie auch alle mit dem Commit-Flag -a hinzufügen.

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