git selective revert (equivalent of `git revert --patch`)
git revert --no-commit
git reset --patch # or `git checkout --patch` if you're sure
I can only think of something like
git revert commit --no-commit
git reset # now the changes are unstaged
git add -p
...
git commit
But I do not know if it is more practicable than your solution, though.