DEV Community

Danyson
Danyson

Posted on • Edited on

How to recover our commit after a git reset --hard ?

While doing a "git reset" with a "--hard" flag in any branch it will reset the index and working tree which means not only our index is discarded but also along with contents in our working file. Simply, any changes to tracked files in the working tree since are discarded.

Now, how do we get back to our last commit. A simple way is there.

So, whenever git does something extreme like changing or rewinding branches, it records that in "reflog" a reference log.
Now, check the output of "git reflog", it will tell you all transitions our branch ever had.
We can then use git show to check and git checkout to get back.

Flow of recovery :

git reflog

<commit_id> (HEAD -> main, origin/main, origin/HEAD) HEAD@{0}: commit: <message>
<commit_id> HEAD@{1}: commit: <message>
<commit_id> HEAD@{2}: commit: <message>
Enter fullscreen mode Exit fullscreen mode

git show <commit_id>

git checkout <commit_id>

Visit My Personal Blog @ danyson.github.io

Support Us on Buy Me a Coffee

Top comments (1)

Collapse
 
rajarajan2809 profile image
Rajarajan2809

Hi @danyson

Also we could do "git reset --hard " with the removed the commit id, which could recover the commit.

Thanks,
Rajan