Відповіді:
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) разом із номером фіксації, у якому це відбувається. Буде зроблено будь-який sedgegege (я використовую це для пошуку видалених типів файлів тощо)
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
?
Показати всі видалені файли в деякому_брані
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
.