Common scenario: A contributor sends a pull request containing 1 or 2 useful changes plus a ton of (unwanted by me) whitespace changes made automatically by his IDE.
Of course I can tell him to adjust his IDE, and to use tools like GitX to stage specific changes before committing, but the damage is done; either he has to re-commit & force push, I have to accept all the changes, or one of us has to add an "undo" commit before merging.
Is there an easier way?
Ideally I could merge just like the commit process in GitX: I could unstage specific changes from the branch, and the tool would either auto-rewrite the commits or make an "undo" commit before merging.
Personally, I would tell the contributor to make the changes and recommit + force push the changes. Since the contributor is probably working on a feature branch in a fork of your repo (the "origin"), nobody is following his commits. There is no real damage if the contributor rewrites the history on a branch that nobody is following and that will probably be deleted after you pull the changes in. For that matter, the contributor could also create a new feature branch which has the final merge-able changes, make a new pull request, and delete the old branch and pull request (so that there is no history rewriting).