Amend & Fixup
Correct the tip of your branch with `git commit --amend`, which writes a new commit and moves the ref while the original waits in the reflog, then queue a fix for a buried commit by writing a `fixup!` marker to fold in later.
Rebase
Rebuild your branch's commits onto a new base, watching each become a new object with the same diff but a fresh parent and hash, fold a queued `fixup!` marker into its target with `--autosquash`, and see why `ours` and `theirs` swap when a replay hits a conflict.
Reset, Revert & Clean
Rewind a branch with `git reset` and pick with `--soft`, `--mixed`, or `--hard` how far the staging area and working tree follow; append a push-safe inverse commit with `git revert` (choosing a mainline with `-m` on a merge); and wipe untracked files with `git clean -fd`, the only one of the three the reflog cannot undo.
Cherry-pick
Copy the change from any commit onto your current branch as a new object with its own hash while the original stays put, select a merge's mainline with `-m`, and run a range through the sequencer that halts on a conflict with four ways out.
Bisect
Pinpoint the commit that broke a test by halving a 1024-commit range in about ten classifications, read the `.git/BISECT_*` state the search parks on disk without moving your branch, and automate the whole loop with `git bisect run` (exit 0 good, 125 skip, non-zero bad).