git commit --fixup and git rebase -i --autosquashgit commit --fixup is very useful if you want to do fixes and later rewrite history to make it look like the fix was already in the original commit.
git commit --fixup <sha> associates a new commit with a previous commit, so that it's easier to squash them when doing a interactive rebase. It automatically reorders commits in interactive rebases so the original commit and the fixup are already one after the other.
git rebase -i --autosquash <sha> goes one step ahead and it automatically squashes original commits and their fixups.