Skip to main content

Recovering from Git Mistakes

Mistakes happen to everyone. Luckily, Git provides several tools for recovering from errors and undoing actions. This tutorial will walk you through some common mistakes and how to recover from them.

Undoing a Commit

Perhaps the most common mistake is committing too early. If you need to undo your last commit, you can use the git reset command:

git reset --soft HEAD~1

The --soft option leaves your working files unchanged, while HEAD~1 specifies the last commit.

Unmodifying a Modified File

If you've made changes to a file and want to undo those changes and restore the file to the last committed state, use git checkout:

git checkout -- file.txt

Unstaging a Staged File

If you've added a file to the staging area with git add and want to undo this action, you can use git reset:

git reset HEAD file.txt

This will leave your file changes intact but remove them from the staging area.

Discarding Local Commits

If you've made several commits but realize they're all wrong, you can use git reset to discard them and match your local branch to the remote branch:

git reset --hard origin/main

This command will make your local branch match the origin/main branch, discarding all commits on your local branch that don't exist on the remote branch.

Recovering a Deleted Commit

If you accidentally delete a commit, Git's reflog command can help you find the commit's hash so you can recover it:

git reflog

Once you have the hash, you can create a new branch with the deleted commit:

git checkout -b branch-name commit-hash


Git provides a powerful toolkit for recovering from mistakes. With the commands covered in this guide, you should be able to navigate common mishaps and keep your project on track.