I am studying Google's trunk based development
In trunk-based development, developers push code directly into trunk. Changes made in the release branches—snapshots of the code when it's ready to be released—are usually merged back to trunk (depicted by the downward arrows) as soon as possible. In this approach, there are cases where bug fixes must be cherry picked and merged into releases (depicted by the upward arrow), but these cases are not as frequent as the development of new features in trunk.
It states that
changes made in the release branches—snapshots of the code when it's ready to be released—are usually merged back to trunk (depicted by the downward arrows) as soon as possible
I'm confused because right before that it states that developers push code directly into trunk.
How is it that code would be pushed to a release branch if it is supposed to be pushed directly to trunk?
Why would bug fixes be cherry picked and merged into release branches it's implied that bug fixes are done in a release branch and that release branch is merged to master?
Assuming code is not directly pushed to a release branch, why would the release branch be merged back into master/trunk if it was forked from master?
