You cannot complete a transfer request that contains only part of a set of changes. Changes are not separable in both Mercurial and Git.
You also cannot push or pull (or request attraction) a set of changes without pulling all of your ancestors, so even committing two separate times with different files each time, you won’t get what you want if you transfer material that you don’t want push / pull / send before what you do.
That's why you need to use function branches to separate your views into logically different lines of development.
If the upward repo looks like this:
[A]---[B]---[C]---[D]
and you clone it, so now you have this:
[A]---[B]---[C]---[D]
and then you create a set of changes in which there is material that you want to send as a transfer request, and some of them are not executed:
[A]---[B]---[C]---[D]---[E]
you were unlucky. You cannot press part E without clicking on it all. You need to separate the material that you want to insert into one set of changes (F), and the material that you do not have (yet?), Wants to click (or request to pull) into another set of changes (E):
[A]---[B]---[C]---[D]---[E]---[F]
You are still out of luck because you cannot press (or ask to pull F) without turning on E, since E is an ancestor of F.
Instead, you need to make your siblings E and F, and not the parent child. Like this:
[A]---[B]---[C]---[D]---[E] \ --[F]
Now you can press F on your fork without E and you can request that F be pulled in without them even when he saw E.
This branching command looks different: do you use Mercurial:
hg clone THEIRS
or git:
git clone THEIRS
And now you will have a branch with only F working, not E, and you can make the pull request you want.
TL DR: By the time you have repeatedly made contributions and contributions to the same commit branch or , you were out of luck. You need to separate them or create a patch and send the patch, not a pull request.