Dipende dal tuo modo esatto di farlo. In questo momento mi sembra che tu abbia un repository git nei tuoi httpdocs a cui sei distribuito, fondamentalmente usando HEAD come il tuo vero sito web - NON è il modo corretto. Non sono sicuro di come sia possibile inviare a questa configurazione?
Quello che vuoi fare è usare un repository nudo fuori dalla cartella httpdocs e controllare i file in httpdocs dopo aver premuto. Mentre questo sembra complicato, è piuttosto facile da fare, ecco un tutorial passo-passo: link
Se il tuo server web ha bisogno di accedere ad alcuni file, come l'installazione di un wordpress, devi aggiungere i comandi chmod e chgrp al gancio di post-ricezione, altrimenti i tuoi file appartengono all'utente sbagliato (quello che hai usato per spingere il commit , non il webserver).
Crea semplicemente un nuovo script per cambiare la proprietà che chiami dall'aggancio post_receive tramite sudo scriptname.sh
(assegna a name change_own.sh o qualsiasi altra cosa):
chown -R wwwrun /path/to/httpdocs
chgrp -R www /path/to/httpdocs
e consenti allo script di essere eseguito senza password tramite visudo
aggiungendo gituser ALL=(ALL) NOPASSWD: /path/to/change_owner.sh
alla fine.
Presupposti fatti: wwwrun - utente del webserver; www - gruppo webserver; gituser - user to push commit
Addendum: un amico ha utilizzato questo metodo e si è lamentato di come ha dovuto aggiornare Wordpress all'infinito. La ragione ovvia è che se la Webapplication si aggiorna da sé, e quindi sostituisce il suo codice, queste modifiche non verranno ritrasferite nel repository, perché il hook funziona solo in un modo. Quindi, dopo ogni commit, l'hook ha annullato tutte le modifiche apportate all'installazione di Wordpress tramite gli aggiornamenti. L'imho soluzione più veloce è quella di eseguire gli aggiornamenti sul computer dello sviluppatore, quindi eseguire il commit per la distribuzione.