Have following remote branches

1. master - deployment
2. staging - testing

3 developers are working on 3 different features

Developer 1 - feature 1
Developer 2 - feature 2
Developer 3 - feature 3

feature 3 gets completed first , dev3 pushes it to staging.
When feature 1 gets completed second , dev1 pushes it to staging.
When feature 2 gets completed last , dev2 pushes it to staging.

now the staging repo has the following commit history

feature 3
feature 1
feature 2

Testers pass only feature 1 and feature 3 and 2 has some bugs to fix.
I want to release feature 1 .

In this case, I cannot merge staging into master.

I am left with Cherry-pick only.
But Cherry-pick should not be used always as a best practice.

what will be the suited git workflow for this type of scenario ?