Isso está resumido em Usando o Git para gerenciar um site
A chave do processo é o gancho do lado do servidor 'pós-recebimento' (mais sobre o git hooks em Personalizando o Git - Git Hooks e a página do manual do githooks ). Esse gancho é executado após o servidor receber todos os dados.
Depois que o servidor recebe os dados, ele executa git checkout -f
A opção -f forçará um checkout na cabeça, mesmo se houver diferenças locais.
#!/bin/sh
GIT_WORK_TREE=/var/www/www.example.org git checkout -f
Coloque isso no hooks/
diretório como post-receive
e executável. Obviamente, o caminho muda para onde você tem os arquivos do servidor da web (o uso deGIT_WORK_TREE
define a variável de ambiente para que você não precise manipular arquivos de ponto e configurações de git no servidor).
Para reverter, deve-se marcar cada release (isso também pode ser feito como parte do gancho pós-confirmação). Ao marcar a versão, é possível identificar facilmente o local para reversão, embora isso provavelmente envolva o logon no servidor e o check-out dessa tag.