DEV Community

Waylon Walker
Waylon Walker

Posted on • Originally published at

Revive files from the dead with git

Git reflog can perform some serious magic in reviving your hard work from the dead if you happen to loose it.


You must git commit! If you never commit the file, git cannot help you. You might look into your trashcan, filesystem versions, onedrive, box, dropbox. If you have none of this, then you are probably hosed.


I really like to practice these techniques before I need to use them so that I understand how they work in a low stakes fashion. This helps me understand what I can and cannot do, and how to do it in a place that does not matter in any way at all.

This is what I did to revive a dropped docker-compose.yml file. The idea is that if I can find the commit hash, I can cherry-pick it.

git init touch git add git commit -m "add readme" touch docker-compose.yml git add docker-compose.yml git commit -m "add docker-compose" git reset 3cfc --hard git reflog
# copy the hash of the commit with my docker-compose commit
git cherry-pick fd74df3
Enter fullscreen mode Exit fullscreen mode


Here was the final reflog that shows all of my git actions. note I did reset twice.

❯ git reflog --name-only
0404b6a (HEAD -> main) HEAD@{0}: cherry-pick: add docker-compose
3cfcab9 HEAD@{1}: reset: moving to 3cfc
9175695 HEAD@{2}: cherry-pick: add docker-compose
3cfcab9 HEAD@{3}: reset: moving to 3cfc fd74df3 HEAD@{4}: commit: add docker-compose docker-compose.yml
3cfcab9 HEAD@{5}: reset: moving to HEAD
3cfcab9 HEAD@{6}: commit (initial): add readme
Enter fullscreen mode Exit fullscreen mode


What's your favorite way to get out of git trouble. I need to learn more about how to unf*** a git repo.

Top comments (2)

Sloan, the sloth mascot
Comment deleted
waylonwalker profile image
Waylon Walker

Definitely a last resort, I am trying to understand git better so that these doors are open any time I might need them.