Open In App

How to Undo a Commit in Git ?

Last Updated : 15 May, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

Git helps developers to manage their projects efficiently. However, even the most experienced developers occasionally make mistakes or need to backtrack on their commits. Thankfully, Git provides several methods to undo commits in Git. In this article, we’ll explore these methods in detail.

Approach 1: Undo a commit from the local repository 

Step 1: First check all your commits

#git log

Output: commits are just examples or sample commits

commit 2: second commit  
commit 1: First commit

Perception drawn are as follows:

  • commit 2 is the commit you want to undo, the current head is here
  • commit1 is the first commit where you want to go after undo

Step 2: To restore everything or undo all the changes we have to reset the commit.

#git reset --soft HEAD^      
#git reset --hard HEAD^  

Note: 

  • soft is used if you want to keep your changes
  • hard is used if you don’t want to keep your changes

Step 3: To check your commit is reset or not

#git log

Output:

commit 1: First commit   
//undo the second commit, now head is at first or previous commit

 One can clearly see last commit (i.e. second commit) is removed.

Approach 2: Undo a commit from the public repository

Now if we have already made your commit public then you will have to create a new commit which will “revert” the changes you made in your previous commit (current HEAD).

Step 1: Revert your changes 

#git revert HEAD  

We are now ready for your new commit in order to restore the file that we accidentally have remove with the below command as follows:

#git commit -m 

Step 2: Now check your all commits to see the list of commits

#git log

Output:

commit 3: restoring the file that we accidentally remove  
commit 2: removing a file we don't need
commit 1: Needed file

Now we can revert your last commit.

Also do note that we use the command below specified to undo the last commits in git where the head is a pointer pointing to the last commit in our branch 

git reset HEAD~<no-of-commits>


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads