Odpowiedzi:
git log --diff-filter=D --summary
Zobacz Znajdź i przywróć usunięty plik w repozytorium Git
Jeśli nie chcesz wszystkich informacji o zatwierdzeniu, w którym zostały usunięte, możesz po prostu dodać grep deletetam.
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 deleteponieważ jeśli wiadomość zatwierdzenia zawiera słowo „usuń”, zostanie również odebrana. Użyj grep 'delete mode'zamiast tego.
To robi, co chcesz, myślę:
git log --all --pretty=format: --name-only --diff-filter=D | sort -u
... które właśnie wziąłem mniej więcej bezpośrednio z tej drugiej odpowiedzi .
Jeśli chcesz zobaczyć tylko aktualnie usunięte pliki, możesz użyć tego:
git ls-files --deleted
jeśli chcesz je usunąć (na wypadek, gdybyś je usunął nie używając „git rm”) potok, który prowadzi do xargs git rm
git ls-files --deleted | xargs git rm
git rm $(git ls-files --deleted)
A jeśli chcesz w jakiś sposób ograniczyć wyniki, oto fajny:
$ 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
Wszystkie pliki zostaną usunięte z some_dir(patrz polecenie sed) wraz z numerem zatwierdzenia, w którym się to wydarzyło. Zrobi to każde wyrażenie regularne (używam tego do znajdowania usuniętych typów plików itp.)
git log --diff-filter=D .
Ponieważ Windows nie ma greppolecenia, działało to dla mnie w PowerShell:
git log --find-renames --diff-filter=D --summary | Select-String -Pattern "delete mode" | sort -u > deletions.txt
Select-String?
Pokaż wszystkie usunięte pliki w some_branch
git diff origin/master...origin/some_branch --name-status | grep ^D
lub
git diff origin/master...origin/some_branch --name-status --diff-filter=D
git diff origin/master...origin/some_branch --name-status | grep ^Dlubgit diff origin/master...origin/some_branch --name-status --diff-filter=D
Spowoduje to wyświetlenie listy wszystkich plików, które zostały usunięte we wszystkich gałęziach, posortowanych według ścieżki:
git log --diff-filter=D --summary | grep "delete mode 100" | cut -c 21- | sort > deleted.txt
Działa w msysgit (2.6.1.windows.1). Uwaga: potrzebujemy „trybu usuwania 100”, ponieważ pliki git mogły zostać zatwierdzone jako tryb 100644 lub 100755.
git diff --name-status commit_hash.