A pretty nifty git trick, if you often interactively rebase your feature branches, is to set the
rebase.autosquash option (i.e.
git config --global rebase.autosquash true). By setting this option, or passing
git rebase -i, you can have commits pre-marked as fixup or squash commits by putting “fixup!” or “squash!” in their commit message, followed by a prefix of the commit message of the commit you want it applied to.
So, given the following history:
01b7812 - (HEAD,feature) fixup! added a0f1e7b - modified a b88bf82 - added b, c and d af0e25c - (master) initial commit
git rebase -i master will present you with the following list:
pick b88bf82 added b, c and d fixup 01b7812 fixup! added pick a0f1e7b modified a
(Note that the “fixup” commit was moved to the right place.)