Я знаю, что git хранит информацию о том, когда файлы удаляются, и я могу проверить отдельные фиксации, чтобы увидеть, какие файлы были удалены, но есть ли команда, которая будет генерировать список всех удаленных файлов в течение срока службы хранилища?
Как я могу перечислить все удаленные файлы в репозитории git?
Ответ 1
git log --diff-filter=D --summary
Смотрите Найти и восстановить удаленный файл в репозитории Git
Если вам не нужна вся информация о том, в какой фиксации они были удалены, вы можете просто добавить туда grep delete
.
git log --diff-filter=D --summary | grep delete
Ответ 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.