DEV Community

Cover image for How to recover a project or files deleted when running git commands
Tawanda Nyahuye
Tawanda Nyahuye

Posted on

How to recover a project or files deleted when running git commands

This week as I was working on a project, I made a terrible mistake running some random Git commands that I copied from the internet and ended up deleted the whole project.

How did we end up here?

Ok, the story is, I was trying to back up my project to my remote repository using git commands. I initialized my remote repository with a .gitignore file and I don't usually do this. When trying to push the project after committing my changes I got the following error:

hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

What deleted my project?

Just like any other software developers when your house is on fire you think of one place, Google. I typed some stuff and ended up on Stack Overflow. I was so happy when I found a question relating to my struggle (you know the feeling right?). The worst thing I did was picking the wrong answer. I copied and pasted the following command on my Git cmd:

$ git fetch --all && git reset --hard origin/master && git pull

After hitting enter my project was gone.

How I recovered my project?

I followed the following steps:

  • Checking when the tip of my branches was updated
$ git reflog

This gave me the following information:

94e51c5 (HEAD -> master, origin/master) HEAD@{0}: reset: moving to HEAD@{1}
94e51c5 (HEAD -> master, origin/master) HEAD@{1}: reset: moving to HEAD@{2}
94e51c5 (HEAD -> master, origin/master) HEAD@{2}: reset: moving to HEAD@{1}
94e51c5 (HEAD -> master, origin/master) HEAD@{3}: reset: moving to HEAD@{0}
94e51c5 (HEAD -> master, origin/master) HEAD@{4}: reset: moving to 94e51c5
94e51c5 (HEAD -> master, origin/master) HEAD@{5}: reset: moving to HEAD
94e51c5 (HEAD -> master, origin/master) HEAD@{6}: reset: moving to origin/master
52d867f HEAD@{7}: commit: added a new link
80e3e2a HEAD@{8}: commit (initial): initial commit
  • I wanted to go back to the first and what I did was:
git reset HEAD@{8}

HEAD@{8} was for my initial commit (last line on the results above)

This listed all the files that I had added and committed with a D on my CMD, showing that they were deleted.

  • To recover them I ran the command below:
$ git restore .

My project was back

Discussion (0)