Skip to content

Instantly share code, notes, and snippets.

@caseyw
Created September 3, 2014 13:41
Show Gist options
  • Save caseyw/3a1d03650a74905f2be4 to your computer and use it in GitHub Desktop.
Save caseyw/3a1d03650a74905f2be4 to your computer and use it in GitHub Desktop.
Walk all commits back to a certain commit
git revert --no-commit 0766c053..HEAD
git commit
Comment from author (Yarin):
Lots of complicated and dangerous answers here, but it's actually easy:
git revert --no-commit 0766c053..HEAD
git commit
This will revert everything from the HEAD back to the commit hash, meaning it will recreate that commit state in the working tree as if every commit since had been walked back. You can then commit the current tree, and it will create a brand new commit essentially equivalent to the commit you "reverted" to.
(The --no-commit flag lets git revert all the commits at once- otherwise you'll be prompted for a message for each commit in the range, littering your history with unnecessary new commits.)
This is a safe and easy way to rollback to a previous state. No history is destroyed, so it can be used for commits that have already been made public.
Edit and comment by Cupcake:
If you really do want to have individual commits (instead of reverting everything with one big commit), then you can pass --no-edit instead of --no-commit, so that you don't have to edit a commit message for each reversion. – Cupcake
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment