Git/Setting up a Server
A Git server is not supposed to host any uncommitted file, so its repositories should be initialized with "bare":
git init --bare /repositories/repo1
Now its files are encrypted and can't be read as flat files from the server.
The distributed repositories can then be initialized with
git clone, updated with
git pull, and submitted to the server with
To avoid any user to erase the server branches when pushing, the branches can be locked, forcing the users to create some pull requests with their changes to validate before merging.