Как я могу перечислить все удаленные файлы в репозитории git? - PullRequest
265 голосов
/ 16 мая 2011

Я знаю, что git хранит информацию о том, когда файлы удаляются, и я могу проверить отдельные коммиты, чтобы увидеть, какие файлы были удалены, но есть ли команда, которая генерировала бы список каждого удаленного файла в течение срока службы хранилища?

Ответы [ 8 ]

368 голосов
/ 16 мая 2011
git log --diff-filter=D --summary

См. Найти и восстановить удаленный файл в репозитории Git

Если вам не нужна вся информация о коммите, в котором они были удалены, вы можете просто добавитьgrep delete там.

git log --diff-filter=D --summary | grep delete
81 голосов
/ 16 мая 2011

Это делает то, что вы хотите, я думаю:

git log --all --pretty=format: --name-only --diff-filter=D | sort -u

... который я более или менее непосредственно взял из другого ответа .

31 голосов
/ 17 февраля 2012

Если вас интересует только просмотр удаленных файлов, вы можете использовать это:

git ls-files --deleted

если вы хотите удалить их (если вы удалили их, не используя "git rm"), канал, который приводит к xargs git rm

git ls-files --deleted | xargs git rm
9 голосов
/ 05 мая 2015

Цитировать этот ответ stackoverflow. Довольно удобный способ получить тип изменения (A: добавлено, M: изменено, D: удалено) для каждого измененного файла.

git diff --name-status
4 голосов
/ 23 октября 2012

И если вы хотите как-то ограничить результаты, вот хороший пример:

$ git log --diff-filter=D --summary | sed -n '/^commit/h;/\/some_dir\//{G;s/\ncommit \(.*\)/ \1/gp}'
delete mode 100644 blah/some_dir/file1 d3bfbbeba5b5c1da73c432cb3fb61990bdcf6f64
delete mode 100644 blah/some_dir/file2 d3bfbbeba5b5c1da73c432cb3fb61990bdcf6f64
delete mode 100644 blah/some_dir/file3 9c89b91d8df7c95c6043184154c476623414fcb7

Вы получите все файлы, удаленные из some_dir (см. Команду sed) вместе с номером коммитаэто произошло.Подойдет любое регулярное выражение sed (я использую это для поиска удаленных типов файлов и т. Д.)

3 голосов
/ 22 декабря 2016

Поскольку в Windows нет команды grep, в PowerShell это сработало:

git log --find-renames --diff-filter=D --summary | Select-String -Pattern "delete mode" | sort -u > deletions.txt
1 голос
/ 20 мая 2019

показать все удаленные файлы в some_branch

git diff origin/master...origin/some_branch --name-status|grep D
0 голосов
/ 20 марта 2016

Это даст вам список всех файлов, которые были удалены во всех ветках, отсортированные по их пути:

git log --diff-filter=D --summary | grep "delete mode 100" | cut -c 21- | sort > deleted.txt

Работает в msysgit (2.6.1.windows.1). Обратите внимание, что нам нужно «удалить режим 100», поскольку файлы git могут быть зафиксированы как режим 100644 или 100755.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...