Up until now, i've mostly done simple rebases, i.e. picking the first commit, squashing all other. But the tool is much more powerful than that. One can move the commits around at will. This can make it trivial to simplify complex pull requests.
Example: You have two features in the same branch, let's call them cleanup
and fixes
. You commit at will using
a commit message that identifies them, say like this:
git commit -m "cleanup 1"
git commit -m "fixes 1"
git commit -m "cleanup 2"