Ответы:
git log --diff-filter=D --summary
См. Поиск и восстановление удаленного файла в репозитории Git.
Если вы не хотите, чтобы вся информация о коммите была удалена, вы можете просто добавить grep deleteтуда.
git log --diff-filter=D --summary | grep delete
git log --find-renames --diff-filter=D --summary | grep delete
git log --no-renames --diff-filter=D --summary | grep delete
grep deleteпотому что если в сообщении о фиксации есть слово delete, оно также будет поднято. Используйте grep 'delete mode'вместо этого.
Это делает то, что вы хотите, я думаю:
git log --all --pretty=format: --name-only --diff-filter=D | sort -u
... который я более или менее прямо взял из этого другого ответа .
Если вас интересует только просмотр удаленных файлов, вы можете использовать это:
git ls-files --deleted
если вы хотите удалить их (в случае, если вы удалили их, не используя «git rm»), канал, который приводит к xargs git rm
git ls-files --deleted | xargs git rm
git rm $(git ls-files --deleted)
И если вы хотите как-то ограничить результаты, вот хороший вариант:
$ 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 (я использую это для поиска удаленных типов файлов и т. Д.)
git log --diff-filter=D .
Поскольку в Windows нет grepкоманды, это помогло мне в PowerShell:
git log --find-renames --diff-filter=D --summary | Select-String -Pattern "delete mode" | sort -u > deletions.txt
Select-String?
Показать все удаленные файлы в 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
git diff origin/master...origin/some_branch --name-status | grep ^Dилиgit diff origin/master...origin/some_branch --name-status --diff-filter=D
Это даст вам список всех файлов, которые были удалены во всех ветках, отсортированы по их пути:
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.
git diff --name-status commit_hash.