Удаление удаленных файлов

Скажем, у меня в git-репозитории есть файл с именем foo.

Предположим, он был удален с помощью rm (не git rm). Тогда статус git покажет:

Changes not staged for commit:

    deleted: foo

Как подготовить удаление этого файла?

Если я попробую:

git add foo

Там написано:

'foo' did not match any files.

Ответ 1

Используйте git rm foo, чтобы сгенерировать файл для удаления. (Это также удалит файл из файловой системы, если он ранее не был удален. Конечно, он может быть восстановлен из git, поскольку он был ранее установлен.)

Чтобы создать файл для удаления без его удаления из файловой системы, используйте git rm --cached foo

Ответ 2

Вы можете сделать git add -u.

Это поможет, если вы хотите удалить несколько файлов, не делая git rm для каждого из них.

Ответ 3

Чтобы выполнить все удаленные вручную файлы, вы можете использовать:

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

Чтобы добавить псевдоним к этой команде как git rm-deleted, запустите:

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

Ответ 4

Добавить все готовые удаленные файлы

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

поблагодарить проверку, чтобы убедиться, что

git status

вам должно быть хорошо идти

Ответ 5

Начиная с Git 2.0.0, git add также будет выполнять удаление файлов.

Git 2.0.0 Docs - git-add

< pathspec >…

Файлы для добавления контента. Для добавления всех> подходящих файлов могут быть заданы файловые блоки (например, *.c). Также может быть дано начальное имя каталога (например, dir для добавления dir/file1 и dir/file2) для обновления индекса в соответствии с текущим состоянием каталога в целом (например, указание dir будет записывать не только измененный файл dir/file1) в рабочем дереве файл dir/file2 добавлен в рабочее дерево, а также файл dir/file3, удаленный из рабочего дерева. Обратите внимание, что более старые версии Git использовались для игнорирования удаленных файлов; используйте --no-all опция, если вы хотите добавить измененные или новые файлы, но игнорировать удаленные.

Ответ 6

Вы можете использовать

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

чтобы создать удаленный каталог.