The commit is wrong. The branch is broken. You need to roll back fast.
In Git, git reset is the tool for this job. It moves your current branch to a specific state. It can rewrite history. It can kill bad commits before they spread. In Mercurial, the approach is different. There is no direct git reset. Instead, you use commands like hg update, hg strip, or hg rollback depending on what you need.
The main difference is philosophy. Git allows destructive rewrites of local history with git reset --hard. Mercurial protects history by design, so you must strip changesets explicitly with extensions like hg strip. This makes Mercurial safer in collaborative environments but more verbose for quick rollbacks.
To mimic git reset in Mercurial:
- Use
hg update -r <rev> to move your working directory to a past commit. - Use
hg strip <rev> to remove commits from history, similar to reset in Git. - Use
hg rollback only for undoing the last commit or transaction, and be aware it is limited.
Experienced developers often switch between Git and Mercurial or maintain projects in both. Knowing these reset mechanics avoids confusion and mistakes. A simple git reset --hard HEAD~2 becomes hg strip followed by hg update in Mercurial.
When moving between systems, remember: Git’s reset changes the branch pointer and optionally the index and working tree. Mercurial’s update moves your working directory pointer, but history changes require stripping.
If your team needs to see powerful Git and Mercurial workflows side-by-side with instant history rewrites, try hoop.dev. Spin up a repo, run the commands, and watch it live in minutes.