In build upstream bare repo (webserver:/usr/local/src/web/example.com/www/), run: # git init --bare --shared=group # git config receive.denyCurrentBranch updateInstead # git config receive.denyNonFastForwards false ?(# git config core.sharedRepository true) # git worktree add /srv/prod/example.com/www master # git worktree add /srv/beta/example.com/www release # git worktree add /srv/dev/example.com/www dev # chown -R root:srv . # chmod -R g+swX . # chown root:srv /srv/prod/example.com/www # chmod g+swX /srv/prod/example.com/www # chown root:srv /srv/beta/example.com/www # chmod g+swX /srv/beta/example.com/www # chown root:srv /srv/dev/example.com/www # chmod g+swX /srv/dev/example.com/www and add your user (on the server) to the srv group.