I saw an answer to a question here that helps restore a deleted file in git.
The solution was
git checkout <deleting_commit>^ -- <deleted_file_path>
What does the caret character (^) do? I’ve seen it elsewhere doing very useful things in git. It’s magical. Someone please spoil it for me and tell me what it does?
HEAD^means the first parent of the tip of the current branch.Remember that git commits can have more than one parent.
HEAD^is short forHEAD^1, and you can also addressHEAD^2and so on as appropriate.You can get to parents of any commit, not just
HEAD. You can also move back through generations: for example,master~2means the grandparent of the tip of the master branch, favoring the first parent in cases of ambiguity. These specifiers can be chained arbitrarily, e.g.,
topic~3^2. See related answer to What’s the difference betweenHEAD^andHEAD~in Git?For the full details, see the “Specifying Revisions” section of
git rev-parse --help.