Respuestas:
git log --diff-filter=D --summary
Consulte Buscar y restaurar un archivo eliminado en un repositorio de Git
Si no desea toda la información sobre en qué confirmación se eliminaron, simplemente puede agregar una grep deleteallí.
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 deleteporque si el mensaje de confirmación tiene la palabra eliminar, también será recogido. Usar en su grep 'delete mode'lugar.
Esto hace lo que quieres, creo:
git log --all --pretty=format: --name-only --diff-filter=D | sort -u
... que acabo de tomar más o menos directamente de esta otra respuesta .
Si solo está interesado en ver los archivos eliminados actualmente, puede usar esto:
git ls-files --deleted
si luego desea eliminarlos (en caso de que los haya eliminado sin usar "git rm"), conduzca a xargs git rm
git ls-files --deleted | xargs git rm
git rm $(git ls-files --deleted)
Y si quieres restringir de alguna manera los resultados, aquí hay uno bueno:
$ 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
Obtendrá todos los archivos eliminados some_dir(consulte el comando sed) junto con el número de confirmación en el que sucede. Cualquier sed regex servirá (lo uso para encontrar tipos de archivos eliminados, etc.)
git log --diff-filter=D .
Como Windows no tiene un grepcomando, esto funcionó para mí en PowerShell:
git log --find-renames --diff-filter=D --summary | Select-String -Pattern "delete mode" | sort -u > deletions.txt
Select-String?
Mostrar todos los archivos eliminados en some_branch
git diff origin/master...origin/some_branch --name-status | grep ^D
o
git diff origin/master...origin/some_branch --name-status --diff-filter=D
git diff origin/master...origin/some_branch --name-status | grep ^Dogit diff origin/master...origin/some_branch --name-status --diff-filter=D
Esto le dará una lista de todos los archivos que se eliminaron en todas las ramas, ordenados por su ruta:
git log --diff-filter=D --summary | grep "delete mode 100" | cut -c 21- | sort > deleted.txt
Funciona en msysgit (2.6.1.windows.1). Tenga en cuenta que necesitamos "modo de eliminación 100" ya que los archivos git pueden haberse confirmado como modo 100644 o 100755.
git diff --name-status commit_hash.