How to deal with untested features in the develop branch before deployment?
You could use the same tools used in Trunk Based Development (TBD) to carry work-in-progress in the trunk (the only non-release TBD branch with a longer lifespan):


feature-toggles/feature-flags
branch by abstraction:



  "Branch by Abstraction" is a technique [1] for making a
  large-scale change to a software system in gradual way that allows you
  to release the system regularly while the change is still in-progress.


These would allow merging a feature in develop/master at any time, without the feature being actually (completed/functional and) enabled. 

If technically these are implemented using configurable means then at any time the software can be tested both with and without a feature enabled, simply by flipping the config flag in the respective test environment. Otherwise special builds may be needed to enable them (still a lot easier than doing a branch merge with the feature's full/partial code).

And you could then run all your feature testing in develop/master to get your features enabled, one at a time.

But if you go in this direction - why would you even struggle with git_flow and run into all these problems? Just go TBD and CI/CD all the way :)