Neste artigo, assume-se que você tenha um site hospedado em um servidor, que esteja rodando Git e SSH.
Repositório local
Crie um repositório local normalmente, caso já tenha, pule esta etapa.
$ mkdir meusite.com.br
$ cd meusite.com.br
$ git init
Repositório remoto
Neste exemplo, vou utilizar a estrutura que o Plesk utiliza para aos domínios.
Precisamos de uma pasta que fique fora de visibilidade da web, portanto, utilizarei a pasta private, que fica na raiz do domínio.
$ cd /var/www/vhosts/meusite.com.br/private
Criamos a pasta do repositório:
$ mkdir meusite.git/
$ cd meusite.git/
Iniciamos um repositório “crú” no mesmo local:
$ git --bare init
E então configuramos o Git com as seguintes opções:
$ git config core.worktree /var/www/vhosts/meusite.com.br/httpdocs
$ git config core.bare false
$ git config receive.denycurrentbranch ignore
Configuramos também o Hook que será executado após toda atualização:
$ cat > hooks/post-receive
#!/bin/bash
SITE_PATH=/var/www/vhosts/meusite.com.br
cd $SITE_PATH/httpdocs
git --work-tree=. --git-dir=$SITE_PATH/private/meusite.git checkout -f
E colocamos permissão para execução:
$ chmod +x hooks/post-receive
Processo de atualização
O processo para atualização é bem simples. Primeiro criamos outro “master” branch, chamado “web”.
$ git remote add web ssh://meusite@servidor.com.br/var/www/vhosts/meusite.com.br/private/meusite.git
Em seguida, realize qualquer alteração:
$ echo "funcionou!" > teste.html
$ git commit -am 'teste'
$ git push web +master:refs/heads/master
Tente acessar: http://meusite.com.br/teste.html
Após isso, você pode atualizar somente com “git push web”, configurando:
$ git config push.default current
Quaisquer dúvidas sobre o Git, podem ser retiradas através do canal #git na irc.freenode.net.
Este material foi baseado no Using Git to manage a web site.
Valeu cara! Vou implementar isso agora mesmo aqui na empresa.
Como aqui o servidor é windows não vou utilizar ssh para sincronizar.
Abração