Skip to content

Instantly share code, notes, and snippets.

@kvasilopoulos
Created December 11, 2019 22:10
Show Gist options
  • Save kvasilopoulos/cb6fbd626692f1741e8f0ae404eb1291 to your computer and use it in GitHub Desktop.
Save kvasilopoulos/cb6fbd626692f1741e8f0ae404eb1291 to your computer and use it in GitHub Desktop.
Find and restore a deleted file in a Git repository
Copied from https://stackoverflow.com/questions/953481/find-and-restore-a-deleted-file-in-a-git-repository
Find the last commit that affected the given path. As the file isn't in the HEAD commit, this commit must have deleted it.
git rev-list -n 1 HEAD -- <file_path>
Then checkout the version at the commit before, using the caret (`^`) symbol:
git checkout <deleting_commit>^ -- <file_path>
Or in one command, if `$file` is the file in question.
git checkout $(git rev-list -n 1 HEAD -- "$file")^ -- "$file"
---
If you are using zsh and have the EXTENDED_GLOB option enabled, the caret symbol won't work. You can use `~1` instead.
git checkout $(git rev-list -n 1 HEAD -- "$file")~1 -- "$file"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment