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.

Revisions

  1. kvasilopoulos created this gist Dec 11, 2019.
    18 changes: 18 additions & 0 deletions restore-delete-file-git
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,18 @@
    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"