git reset vs git revert
Compare rewriting branch history with safely creating a new commit that undoes previous changes.
Architecture
git reset
git reset moves HEAD and can change branch history, staging state, and working tree state depending on the reset mode. It is powerful for local cleanup and history rewriting.
Architecture
git revert
git revert creates a new commit that undoes the effect of an earlier commit. It preserves shared history and is safer for branches that others already use.
Key Differences
git reset rewrites branch history, while git revert preserves history by adding a new undo commit.
git reset is commonly used for local cleanup and branch correction before sharing changes.
git revert is safer for shared branches because it does not remove or rewrite published commits.
Reset can affect HEAD, index, and working tree depending on mode, while revert creates an explicit correction in commit history.
Revert is better for auditability and collaboration, while reset is better for local history repair.
The key difference is whether you want to rewrite the past or record a safe correction in the present.
When to Use
When to use git reset
Use git reset when you need to clean up local history, uncommit local changes, or move branch state backward before that history is shared with others.
When to use git revert
Use git revert when you need to undo a change that is already in shared history without rewriting commits that teammates may already have.
Tradeoffs
git reset is more powerful for local cleanup, but more dangerous in collaborative history.
git revert is safer and more explicit, but creates extra commits rather than simplifying history.
Reset optimizes branch cleanup, while revert optimizes team safety and auditability.
Common Mistakes
Using git reset on shared branches and breaking collaborators’ history.
Using git revert when the real need is local cleanup before push.
Not understanding that reset and revert solve different collaboration problems.
Interview Tip
A strong answer is: reset rewrites history, revert safely records an undo commit in history.