Удаление нескольких файлов из репозитория Git, которые уже были удалены с диска - PullRequest
1275 голосов
/ 29 января 2009

У меня есть репозиторий Git, в котором я удалил четыре файла с использованием rm ( не git rm), и мой статус Git выглядит следующим образом:

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

Как мне удалить эти файлы из Git без необходимости вручную проходить и добавлять каждый файл следующим образом:

git rm file1 file2 file3 file4

В идеале я ищу что-то, что работает так же, как и git add ., если это возможно.

Ответы [ 29 ]

4 голосов
/ 05 августа 2014
git commit -m 'commit msg' $(git ls-files --deleted)

Это сработало для меня после того, как я уже удалил файлы.

3 голосов
/ 15 ноября 2011

Мне нужно было то же самое и использовал git gui кнопку «поменялся сценой». это также добавляет все.

И после того, как «сцена изменилась», я сделал «коммит» ...

так что мой рабочий каталог снова чист.

2 голосов
/ 07 марта 2013

Вы можете использовать git add -u <filenames> только для удаления удаленных файлов.

Например, если вы удалили файлы templates/*.tpl, используйте git add -u templates/*.tpl.

-u требуется для ссылки на файлы, которые существуют в хранилище, но больше не существуют в рабочем каталоге. В противном случае по умолчанию git add - поиск файлов в рабочем каталоге, и если вы укажете удаленные файлы, он не найдет их.

1 голос
/ 10 декабря 2018
git rm $(git ls-files -d)

Удаляет все файлы, перечисленные командой git ls-files (-d показать только удаленные файлы). Не работает для файлов с пробелами в имени файла или пути, но просто запомнить

1 голос
/ 23 ноября 2016

(еще один вариант)

Я хотел удалить все уже удаленные с диска файлы, кроме одной определенной папки, оставив остальные папки нетронутыми. У меня сработало следующее:

git ls-files --deleted  | grep <folder-name> | xargs git rm
1 голос
/ 19 февраля 2014

Добавление системного псевдонима для размещения удаленных файлов в виде команды rm-all

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

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

Примечание

В Windows должен быть установлен bash.

1 голос
/ 29 января 2009

что-то вроде

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

может сделать это.

0 голосов
/ 04 февраля 2014

Для визуального студийного проекта

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

, что полезно, когда в пути к удаленному файлу есть пробел

0 голосов
/ 03 октября 2012

Самое гибкое решение, которое я нашел на сегодняшний день, -

git cola

И выберите все удаленные файлы, которые я хочу поставить.

(Обратите внимание, что я обычно делаю все командные строки в git, но git обрабатывает удаленные файлы немного неловко).

...