Yes what you’re describing is literally the thing GitHub has built but instead of having to make a bunch of compromises, there is dedicated UI and product metaphor for it.

Some examples of compromises:

You can’t merge partially merge a large “review commit by commit” PR so you are forced to wait until it is all ready to merge.