Hello Folks, there are situations when you need to revert all the commits of a feature without checking out an earlier commit. This allows you to retain changes made for other features while isolating the problematic ones.

In this blog, we’ll explore multiple ways to revert commits efficiently using Git command-line tools.


Why Revert Multiple Commits?

Imagine a scenario where your QA team reports a bug that might have been introduced by your changes. Instead of manually reverting each commit, you can automate the process to save time and effort. This approach is particularly useful when dealing with a large number of commits.


Method 1: Using grep, cut, and xargs

This method is ideal for reverting commits based on a specific keyword or feature name.

Command:

1
git log --pretty=oneline | grep 'feature_name' | cut -d ' ' -f1 | xargs -n1 git revert --no-edit

How It Works:

  1. git log --pretty=oneline: Lists all commits in a single line format.
  2. grep 'feature_name': Filters commits related to the specified feature.
  3. cut -d ' ' -f1: Extracts the SHA hash of each commit.
  4. xargs -n1 git revert --no-edit: Reverts each commit one by one.

This method is quick and effective for reverting commits tied to a specific feature.


Method 2: Using git reset

If you want to revert multiple commits and discard changes, git reset is a powerful option.

Command:

1
git reset --hard <commit-SHA>

How It Works:

  1. Identify the SHA of the commit you want to reset to.
  2. Use git reset --hard to move the HEAD pointer to the specified commit.

Note: This method discards all changes after the specified commit, so use it cautiously.


Method 3: Using git revert with a Range

If the commits are consecutive, you can revert them using a range.

Command:

1
git revert <commit-SHA1>..<commit-SHA2>

How It Works:

  1. Specify the range of commits to revert.
  2. Git reverts all commits within the range.

This method is efficient for reverting consecutive commits.


Video Tutorial


Conclusion

Reverting multiple commits in Git can be done in various ways, depending on your requirements. Whether you use grep, cut, and xargs for automation or git reset for a hard reset, these methods save time and streamline your workflow.

Experiment with these techniques and find the one that best suits your project needs. Happy coding!


What are your favorite Git commands for reverting commits? Share your thoughts in the comments below!