This git --squash flag doesn't seem to get much attention. It allows you to merge all changes on a branch into your current branch, but as a single commit. Squashing to a single commit gives you an opportunity to clean up messy WIP commits and provide a good rationale for the changes your are merging.
When you know that you are going to squash anyway, there is nothing that stops you from committing left, right and center on your feature branch, with broken tests and whatever. Liberating!