In our project, we have a central server with gitosis managed repository with several branches. From there, each developer fetches the last changes in the branch that need to be processed, makes its own changes, compiles locally and when it is compiled and checked (if possible) pulls again (pulls any changes) and pushes.
Typically, small functions without major glitch are handled directly on the main branch, while large changes are first performed on their own branch (which can be shared by several developers in this way).
Remember to delete your branches after using them, otherwise it will be confusing. Actually, I have a special branch called branches that tracks with git merge -s ours ... links to all other branches at their decisive points (branch, merge, end), so even if I delete the branch without merging ( for example, I decided not to go along this route, or it was only some branch of error search), I still have a link to it and can revive it if necessary.
source share