How to find and restore a deleted file in a Git repository

前端 未结 27 1133
挽巷
挽巷 2020-11-22 01:25

Say I\'m in a Git repository. I delete a file and commit that change. I continue working and make some more commits. Then, I find I need to restore that file.

I know

27条回答
  •  逝去的感伤
    2020-11-22 02:20

    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 -- 
    

    Then checkout the version at the commit before, using the caret (^) symbol:

    git checkout ^ -- 
    

    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"
    

提交回复
热议问题