wake-up-neo.com

Staging gelöschter Dateien

Angenommen, ich habe eine Datei in meinem Git-Repostiory mit dem Namen foo.

Angenommen, es wurde mit rm (nicht mit git rm) gelöscht. Dann zeigt der Git-Status:

Changes not staged for commit:

    deleted: foo

Wie stufe ich diese individuelle Dateilöschung ein?

Wenn ich es versuche:

git add foo

Es sagt:

'foo' did not match any files.
437
Andrew Tomazos

Verwenden Sie git rm foo, um die Datei zum Löschen vorzubereiten. (Dies löscht auch die Datei aus dem Dateisystem, wenn sie zuvor nicht gelöscht wurde. Sie kann natürlich aus Git wiederhergestellt werden, da sie zuvor eingecheckt wurde.)

Verwenden Sie git rm --cached foo, um die Datei zum Löschen vorzubereiten, ohne sie aus dem Dateisystem zu löschen.

462
Wooble

Du könntest git add -u machen.

Dies ist hilfreich, wenn Sie mehrere Dateien löschen möchten, ohne git rm für jede einzelne.

380
Sailesh

Zum Bereitstellen aller manuell gelöschten Dateien können Sie Folgendes verwenden:

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

Um diesem Befehl einen Alias ​​als git rm-deleted hinzuzufügen, führen Sie Folgendes aus:

git config --global alias.rm-deleted '!git rm $(git ls-files --deleted)'
140
Ian Mackinnon

hinzufügen aller fertig gelöschten Dateien

git status -s | grep -E '^ D' | cut -d ' ' -f3 | xargs git add --all

ich danke Ihnen, überprüfen Sie, um sicherzustellen, dass

git status

du solltest bereit sein zu gehen

32
chet corey

Seit Git 2.0.0 werden mit git add auch Dateilöschungen durchgeführt.

Git 2.0.0 Docs - git-add

<Pfadangabe>…

Dateien, aus denen Inhalte hinzugefügt werden sollen. Mit Fileglobs (z. B. * .c) können alle passenden Dateien hinzugefügt werden. Es kann auch ein führender Verzeichnisname (z. B. dir, um dir/file1 und dir/file2 hinzuzufügen) angegeben werden, um den Index so zu aktualisieren, dass er dem aktuellen Status des gesamten Verzeichnisses entspricht (z. B. wenn dir angegeben wird, wird nicht nur eine modifizierte Datei dir/file1 aufgezeichnet Im Arbeitsbaum wird eine Datei dir/file2 zum Arbeitsbaum hinzugefügt, aber auch eine Datei dir/file3, die aus dem Arbeitsbaum entfernt wurde. Beachten Sie, dass ältere Versionen von Git entfernte Dateien ignorierten. Verwenden Sie die Option --no-all, wenn Sie geänderte oder neue Dateien hinzufügen, entfernte jedoch ignorieren möchten.

12
peflorencio

Sie können verwenden

git rm -r --cached -- "path/to/directory"

ein gelöschtes Verzeichnis bereitstellen.

7
GameScripting