How to revert a commit in Git?

Experiment: <git revert commit> with examples

For this tutorial, we will use a git repository that is already existing. If you want to learn to add files to your repository, you can check this page: Git add and Git commit examples

Step #1. Go to your git repository and check the git status

[email protected]:~/codetryout-code$ git status
On branch master
nothing to commit, working tree clean

We have a few commits, and here is the list of files. Each of them was created for each commit, for a better understanding.

[email protected]:~/codetryout-code$ ls -l
total 0
-rw-rw-r-- 1 ubuntu ubuntu 0 Jan  5 22:01 file1
-rw-rw-r-- 1 ubuntu ubuntu 0 Jan  5 22:03 file2
-rw-rw-r-- 1 ubuntu ubuntu 0 Jan  5 22:03 file3

Step #2. Git revert your latest commit

As per the git log, your latest commit id is 6815e845f13046570aaccdb66aee38caa68a6a60

git revert <COMMIT-ID>

These are the steps to revert the commit:

[email protected]:~/codetryout-code$ git revert 6815e845f13046570aaccdb66aee38caa68a6a60 
Removing file3
[master 9a97f1b] Revert "commit 3"
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 file3

Let us verify whether our latest changes have been reverted (file3 should not be there)

[email protected]:~/codetryout-code$ ls -l
total 0
-rw-rw-r-- 1 ubuntu ubuntu 0 Jan  5 22:01 file1
-rw-rw-r-- 1 ubuntu ubuntu 0 Jan  5 22:03 file2
[email protected]:~/codetryout-code$ 

Step #3. Let’s revert one more file

[email protected]:~/codetryout-code$ git revert efc13573a8b93ce10d74980b0ad4ac510e63734b
Removing file2
[master 62cb3f9] Revert "commit 2"
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 file2
[email protected]:~/codetryout-code$

Verifying the latest revert:

[email protected]:~/codetryout-code$ ls -l
total 0
-rw-rw-r-- 1 ubuntu ubuntu 0 Jan  5 22:01 file1
[email protected]:~/codetryout-code$ 

Step #4: Let us explore the git log to see all changes, commits, and reverts

Look at them closely, the commits and reverts have been updated. You may reverse these changes in the future.

[email protected]:~/codetryout-code$ git log
commit 62cb3f9682c74cdca237c5a1c9533ecb521b6628 (HEAD -> master)
Author: Ubuntu <[email protected]>
Date:   Tue Jan 5 22:31:46 2021 +0530

    Revert "commit 2"
    
    This reverts commit efc13573a8b93ce10d74980b0ad4ac510e63734b.

commit 9a97f1b9091524f31e969f4d0ab65f118b2af137
Author: Ubuntu <[email protected]>
Date:   Tue Jan 5 22:27:03 2021 +0530

    Revert "commit 3"
    
    This reverts commit 6815e845f13046570aaccdb66aee38caa68a6a60.

commit 6815e845f13046570aaccdb66aee38caa68a6a60
Author: Ubuntu <[email protected]>
Date:   Tue Jan 5 22:03:36 2021 +0530

    commit 3

commit efc13573a8b93ce10d74980b0ad4ac510e63734b
Author: Ubuntu <[email protected]>
Date:   Tue Jan 5 22:03:20 2021 +0530

    commit 2

commit b36945a7bc5df78259a97a6bc6c90224e56c1434
Author: Ubuntu <[email protected]>
Date:   Tue Jan 5 22:02:54 2021 +0530

    commit 1
[email protected]:~/codetryout-code$ 

Note: This test case is done in an Ubuntu terminal, however the same will work on any Git command line, such as Git Bash, Linux/CentOS and Docker containers with git client, etc.