tag - ¿Cómo puedo listar todos los archivos eliminados en un repositorio de git?
git push tag (7)
Citando this respuesta de stackoverflow. Una forma bastante clara de obtener el tipo de cambio (A: Agregado, M: Modificado, D: Eliminado) para cada archivo que se modificó.
git diff --name-status
Sé que git almacena información sobre cuándo se eliminan los archivos y puedo verificar las confirmaciones individuales para ver qué archivos se eliminaron, pero ¿hay un comando que genere una lista de todos los archivos eliminados durante la vida útil de un repositorio?
Como Windows no tiene un comando grep
, esto funcionó para mí en PowerShell:
git log --find-renames --diff-filter=D --summary | Select-String -Pattern "delete mode" | sort -u > deletions.txt
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 .
Esto le dará una lista de todos los archivos que fueron eliminados 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 el "modo de eliminación 100" ya que los archivos git pueden haberse comprometido como el modo 100644 o 100755.
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 elimine sin usar "git rm"), utilice el conducto para que xargs git rm
git ls-files --deleted | xargs git rm
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 de some_dir
(consulte el comando sed) junto con el número de confirmación en el que suceda. Cualquier sed regex hará (uso esto para encontrar tipos de archivos eliminados, etc.)
git log --diff-filter=D --summary
Consulte Buscar y restaurar un archivo eliminado en un repositorio Git.
Si no desea toda la información sobre en qué compromiso se eliminaron, puede agregar un grep delete
allí.
git log --diff-filter=D --summary | grep delete