Imagine, there is an open-source project with a Maintainer and a Contributor. Both of them have theirs repos exported to some repository hosting (github, bitbucket, sourceforge --- whatever, but they are public).
Imagine further, Contributor did several commits, pushed them into his repo and sent pull-request to the Maintainer. Maintainer did review, made several comments about commits (fix this, fix that, simplify there, blah-blah-blah) and rejected the pull-request. Note:
For Contributor it's obvious that it's better to just fix patches/commits than rewriting from scratch.
Please consider situation, when there are many commits and fixes have to be scattered between them.
What should Contributor do in this situation before making next pull-request? Remove invalid repo, rewrite history and push new one? Make a fix commit into current one?
May Maintainer demand, that incoming history should be clean? I.e. is it technically simple enough to do?