Thursday, 3 May 2018
Find and restore a deleted file in a Git repository
Answer
Answer
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 I can checkout a file using git checkout HEAD^ foo.bar
, but I don't really know when that file was deleted.
- What would be the quickest way to find the commit that deleted a given filename?
- What would be the easiest way to get that file back into my working copy?
I'm hoping I don't have to manually browse my logs, checkout the entire project for a given SHA and then manually copy that file into my original project checkout.
Answer
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"
casting - Why wasn't Tobey Maguire in The Amazing Spider-Man? - Movies & TV
In the Spider-Man franchise, Tobey Maguire is an outstanding performer as a Spider-Man and also reprised his role in the sequels Spider-Man...
-
The whole error output being: LNK2019 unresolved external symbol wWinMain referenced in function "int __cdecl __scrt_common_main_seh(vo...
-
I have come across CORS issues multiple times and can usually fix it but I want to really understand by seeing this from a MEAN stack paradi...
-
I recently used canvas to conert images to webp, using : const dataUrl = canvas.toDataURL('image/webp'); But this takes a lots of ti...
No comments:
Post a Comment