Imagine you're working a feature branch and realize that the first commit you made had a typo. You could just tack on another commit to fix the typo, but that will add noise to your commit history. You can fix it up by making a fixup commit.
- Make your typo fix
- Stage the fix
- Find the SHA of the commit that you want to fix (e.g.
2ee53ad
) - Create a fixup commit:
git commit --fixup 2ee53ad
This fixup commit is tied to the original commit it is fixing.
❯ git log --pretty=oneline --abbrev-commit
b4258b6 (HEAD -> feature-branch) fixup! Add header
9c0d2b0 Different atomic change
2ee53ad Add header
8486b91 (master) Initial commit
To then apply the fixup, run git rebase -i --autosquash master
. This will
present you with the following interactive rebase screen:
pick 2ee53ad Add header
fixup b4258b6 fixup! Add header
pick 9c0d2b0 Different atomic change
# Rebase 8486b91..b4258b6 onto 8486b91 (3 commands)
Because git knows that your fixup commit is tied to 2ee53ad
, it
automatically moves it into place below that commit with the fixup
command.
Saving will apply and autosquash the fixup commit leaving you with a clean commit history.