How to recover a commit from GitHub's Reflog
- Posted on November 23, 2016
- software development
- By Carlos Camacho
Writing this blog post, suddenly and without knowing I ended up by squashing/removing the commit holding those changes.
The first thing that came to my mind was to locally check the Reflog to restore the commit, but sadly I was removed the repo from my laptop and the Reflog didn’t exist anymore. Then I went into panic as I didn’t wanted to lose those hours that took me to write the post. Then, I said… Does GitHub have Reflog? The sweet answer, yes..
So lets learn how to recover a commit from GitHub Reflog.
Relevant strings to fill:
- <user>: The user holding the git repo.
- <repo>: The repository name.
- <recover-branch-name>: The remote branch that you will create.
- <sha-goes-here>: The commit sha to be restored.
Let’s curl GitHub to get all commits in the Reflog:
$ curl https://api.github.com/repos/<user>/<repo>/events
Now let’s create a remote branch with your commit.
Choose your commit sha and run:
$ curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X POST -d '{"ref":"refs/heads/<recover-branch-name>", "sha":"<sha-goes-here>"}' https://api.github.com/repos/<user>/<repo>/git/refs
You should have created a branch called
So yeah, I have to admit that I squashedcrashed those commits in some how…
I hope that last tips are useful if you are in a trouble like me trying to recover some lost commits from GitHub.
Responses
Want to leave a comment? Visit this post's issue page on GitHub (you'll need a GitHub account. What? Like you already don't have one?!).