Step 1: choose your starting commit
git rebase --interactive [commit-hash]
[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.