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

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

Ответ 2

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

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

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

Ответ 3

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

git ls-files --deleted

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

git ls-files --deleted | xargs git rm

Ответ 4

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

git diff --name-status

Ответ 5

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

$ 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 regex будет делать (я использую это, чтобы найти удаленные типы файлов и т.д.)

Ответ 6

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

git log --find-renames --diff-filter=D --summary | Select-String -Pattern "delete mode" | sort -u > deletions.txt

Ответ 7

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

git diff origin/master...origin/some_branch --name-status | grep ^D

или

git diff origin/master...origin/some_branch --name-status --diff-filter=D 

Ответ 8

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

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.