Los archivos que se han eliminado de la copia local de un repositorio se pueden recuperar de git.
git ls-files -d | xargs git checkout
Este ejemplo muestra primero que un repositorio git está actualizado, esto se hace llamando al comando git status. Un archivo se elimina en la unidad local. Luego, se vuelve a llamar al comando git status y muestra que falta el archivo que acabamos de eliminar. Luego se llama al comando git ls-files con el parámetro -d para listar todos los archivos eliminados. Esa lista se canaliza a un comando de git checkout para recuperar el archivo del repositorio. Finalmente, se llama al comando git status y muestra que el repositorio está actualizado y que el archivo que se eliminó previamente se ha restaurado desde el repositorio. La versión del archivo restaurado es la última que se envió en Git. Si no se confirmó la última versión del archivo, estas modificaciones no se recuperan.
$ git status On branch master Your branch is up-to-date with 'origin/master'. nothing to commit, working directory clean $ rm logs/donotremove.txt $ git status On branch master Your branch is up-to-date with 'origin/master'. Changes not staged for commit: (use "git add/rm..." to update what will be committed) (use "git checkout -- ..." to discard changes in working directory) deleted: logs/donotremove.txt no changes added to commit (use "git add" and/or "git commit -a") $ git ls-files -d | xargs git checkout $ git status On branch master Your branch is up-to-date with 'origin/master'. nothing to commit, working directory clean