Step 1: choose your starting commit
git rebase --interactive [commit-hash]
Where [commit-hash]
is the hash of the commit just before the first one you want to rewrite from.
Step 2: picking and squashing
pick d94e78 Prepare the workbench for feature Z --- older commit
s 4e9baa Cool implementation
s afb581 Fix this and that
s 643d0e Code cleanup
s 87871a I'm ready!
s 0c3317 Whoops, not yet...
s 871adf OK, feature Z is fully implemented --- newer commit
[...]
Save the file and close the editor.
Step 3: Create the new commit
You have just told Git to combine all seven commits into the the first commit in the list. It's now time to give it a name: your editor pops up again with a default message, made of the names of all the commits you have squashed.