Run a soft reset to move the branch back one commit while keeping your edits in place.
git reset --soft HEAD~1 # commit undone, changes stay staged
git commit -m "better message" # recommit cleanly
The commit disappears from history, but every file change stays exactly as it was. Soft leaves them staged, ready to recommit. Swap in --mixed if you want them unstaged instead, back in the working directory.
This is the fix when you committed too early, wrote a bad message, or forgot a file. Avoid --hard here, because that throws the work away, which is the one thing you are trying not to do. If you already pushed, reach for git revert or a follow-up commit instead; reset and amend both rewrite shared history.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
The diagram below the answer is the concept . Jump to it ↓