Say I am using git by creating a new branch for each feature, then merging into master.
So each merge is very narrow in that it is for a specific feature.
After 10 commits like this, can I go back and remove the 5th merge somehow?
Say it was a feature I didn’t want.
We do this constantly. Here is how: http://dymitruk.com/blog/2012/02/05/branch-per-feature/
You want to reset master to just before the 5th merge. Now merge in the rest.
One suggestion would be to use a release candidate branch instead of master. Use master to mark what was released.