Reset vs. revert
The one concept page in this set. There's no separate click path to walk through here, since it's the same menu covered on the reset & revert page (click a commit in the graph, then choose reset or revert from there).
Reset moves your branch pointer backward. It rewrites what your branch points to. Safe for commits that only exist locally; risky once something's pushed, since it diverges you from history other people may already have.
Revert adds a new commit that undoes an earlier one. Nothing is ever deleted. Always safe, even on pushed commits, because from the outside it just looks like a normal new commit.
Before: A ─ B ─ C (C is the commit you want undone)
After revert: A ─ B ─ C ─ C' (C' is a new commit undoing C;
C is still there)
After reset: A ─ B (C is gone from this branch)
The short version: reset edits the past, revert adds to the record. That's the actual rule GitRoot's own UI uses to decide which warnings to show, not a simplification for this page.
A simple rule of thumb
- Undoing something that's still local and hasn't been shared? Reset is usually fine, and simpler.
- Undoing something that's already been pushed, or that someone else might be relying on? Revert. You're adding to history, not rewriting it.