I did a lot of reading on popular git workflows including A Successful Git Branching Model, merging, rebasing, and cherry-picking, but I'm still not able to apply all this on how to solve the problem described below. I feel like cherry-picking might help here, but I'm not sure if that's the best idea.
Let's say I have three devs working on three features in branches f1, f2, f3, and these get merged into a development branch, creating 3 commits one on top of the other. The changes go through customer UAT, and the customer decides f1 and f3 are good to go live, but f2 needs some work.
How could I achieve this? What are some good-practice ways in which I can have f1 and f3 go live in the current release, but f2 can go in the next release?