You like clean commit histories. If something goes wrong you use --amend and carry on. Life is good. The problem Then it hits you, you forgot something in an older commit. So you have to reach for a heavier gun in the form of git rebase --interactive (or git rebase -i), which offers a handy fixup option: f, fixup = like "squash", but discard this commit's log message Let’s see this in action.