How Can I Revert Multiple Git Commits?

Better Stack Team
Updated on July 25, 2024

To revert multiple Git commits, you have a few options depending on your specific needs and the situation. Here are two common approaches: using git revert and using git reset. Each approach has its implications and should be chosen based on whether you want to preserve the commit history or not.

Using git revert (Preserve Commit History)

  1. Identify the Commits to Revert: First, identify the range of commits you want to revert. You'll need the hashes of the commits or a reference to a branch that includes them.
  2. Revert Commits: Use git revert to create new commits that undo the changes introduced by each of the specified commits:

     
    git revert <commit1> <commit2> ...
    

    Replace <commit1>, <commit2>, etc., with the actual commit hashes or references you want to revert. You can specify multiple commits separated by spaces.

    For example, to revert commits abcdef1 and 0123456:

     
    git revert abcdef1 0123456
    

    This command will create new revert commits on top of your current branch. Each revert commit will undo the changes made by the corresponding original commit.

  3. Push Reverts (if necessary): If you want to share the reverted changes with others, push the changes to your remote repository:

     
    git push origin <branch-name>
    

    Replace <branch-name> with your branch name.

Using git reset (Rewriting History)

  1. Identify the Commits to Reset: Determine the commit until which you want to keep your changes (usually the commit before the first commit you want to remove).
  2. Reset the Branch: Use git reset with the -hard option to reset the branch to a specific commit, discarding commits after that commit:

     
    git reset --hard <commit>
    

    Replace <commit> with the hash of the commit you want to reset to.

    For example, to reset the branch to the commit before abcdef1:

     
    git reset --hard abcdef1^
    

    This command resets the branch to the commit before abcdef1, discarding abcdef1 and all commits that follow it.

  3. Force Push (if necessary): If you've already pushed these commits to a remote repository and you're sure you want to rewrite history (which can cause issues for collaborators), you'll need to force-push the changes:

     
    git push origin <branch-name> --force
    

    Note: Be cautious when using git reset --hard and force-pushing because it changes history. Collaborators who have pulled the old history may encounter issues.

Choosing Between git revert and git reset

  • git revert: Use this if you want to keep a clear history and don't mind having revert commits on top of your branch. It's safer for shared branches where rewriting history could cause problems.
  • git reset --hard: Use this if you want to completely remove commits from history. However, be aware that this changes history and requires force-pushing, which can disrupt collaboration.

Safety Tips

  • Backup: Before performing any irreversible Git operations, ensure you have backups or copies of important commits.
  • Communication: If you're collaborating with others, communicate changes and coordinate actions to avoid conflicts and confusion.

By following these steps, you can effectively revert multiple Git commits using git revert to preserve history or git reset --hard to rewrite history, depending on your needs and situation.

Got an article suggestion? Let us know
Explore more
Git
Licensed under CC-BY-NC-SA

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Make your mark

Join the writer's program

Are you a developer and love writing and sharing your knowledge with the world? Join our guest writing program and get paid for writing amazing technical guides. We'll get them to the right readers that will appreciate them.

Write for us
Writer of the month
Marin Bezhanov
Marin is a software engineer and architect with a broad range of experience working...
Build on top of Better Stack

Write a script, app or project on top of Better Stack and share it with the world. Make a public repository and share it with us at our email.

community@betterstack.com

or submit a pull request and help us build better products for everyone.

See the full list of amazing projects on github