Just getting into GIT and bitbucket, so please excuse my ignorance at this point. I'm looking for wisdom about how to setup a repository, such that I can allow other people to create branches and work on new features, but nothing ever can be merged back into the main tree without my code review and approval. From reading around it seems like that runs counter to the open source git revolution, but nonetheless that is what I want to be able to do, to have myself or perhaps someone else I choose to be gatekeeper and approve or deny any and all attempts to update the main branch (with a push is it?). Conversely, I don't want to code review every single commit happening in their feature branch. Its more like after they have a feature ready to merge back into the main trunk, I guess they submit a pull request right? But then I want to code review the entire change that is being suggested, in comparison to what is currently in the main trunk, and only when I approve it, can it actually be pushed back into the main trunk.
Seems like GIT has a lot of flexibility to work in a lot of different ways, some more open then others, but its not entirely clear to me what is the best way to setup a process of how to go about handling that kind of release oversight and control.
Any thoughts on this topic are welcome. Thanks.