Como automatizar deploys via Git com um hook post-receive
Se você atualiza seu site ou sistema copiando arquivos manualmente toda vez (por FTP ou Gerenciador de Arquivos), sabe como isso é trabalhoso — e arriscado, porque um arquivo esquecido ou uma pasta enviada pela metade pode derrubar o site. Existe um jeito bem mais tranquilo: usar o próprio Git para publicar seu projeto sozinho, a cada git push. Vamos aprender juntos como isso funciona. 🌱
O que é um hook post-receive?
O Git permite criar um repositório especial no servidor, chamado de repositório "bare" (sem os arquivos de trabalho, só o histórico). Quando você faz um git push para esse repositório, o Git dispara automaticamente um script chamado post-receive — e é nesse script que você define o que deve acontecer depois do envio, como copiar os arquivos para a pasta do site, reiniciar um processo, instalar dependências, etc.
Ou seja: você digita git push no seu computador, e o próprio servidor cuida de "publicar" a versão mais nova. Sem FTP, sem arrastar pasta, sem esquecer arquivo.
Antes de começar
Para configurar um hook post-receive você precisa de acesso via terminal (SSH) ao servidor onde seu projeto está hospedado. Nem todo plano ou situação tem esse acesso liberado por padrão — o mais seguro é confirmar com o nosso suporte ou verificar no painel.gehost.com.br se o seu plano contempla acesso SSH antes de seguir os próximos passos.
💡 Dica da Sensei: se você nunca usou SSH antes, não se assuste — é só um "terminal remoto". Você digita comandos e eles rodam direto no servidor, como se você estivesse sentada(o) na frente dele.
Passo a passo para configurar
-
Crie o repositório "bare" no servidor.
Conectado via SSH, escolha um local fora da pasta pública do site (por exemplo, uma pasta chamadarepo.gitno seu diretório do usuário) e rode:git init --bare repo.git -
Crie o script do hook.
Dentro da pastarepo.git, entre emhooks/e crie um arquivo chamado exatamentepost-receive(sem extensão). Esse arquivo vai conter os comandos que o Git deve executar após cada push — o mais comum é "extrair" os arquivos da branch principal para a pasta pública do site, algo como:#!/bin/bash
git --work-tree=/caminho/da/sua/pasta/public_html --git-dir=/caminho/do/repo.git checkout -f -
Dê permissão de execução ao hook.
O servidor só vai rodar o script se ele estiver marcado como executável:chmod +x hooks/post-receive -
Adicione o servidor como "remote" no seu projeto local.
No seu computador, dentro da pasta do projeto, rode:git remote add producao usuario@seudominio.com.br:/caminho/do/repo.git -
Faça o primeiro deploy!
Agora é só enviar sua branch principal:git push producao main
O Git vai transferir o código, disparar o hook automaticamente e os arquivos já vão aparecer atualizados na pasta do site.
Testando se deu certo
Depois do push, acesse seu site normalmente pelo navegador e confira se as últimas alterações apareceram. Se algo não mudou, revise se o caminho usado no --work-tree do hook está correto e se o arquivo post-receive realmente ficou executável (passo 3).
💡 Dica da Sensei: nunca faça deploy direto da branch onde você ainda está testando código. Trabalhe em uma branch separada e só dê push para "produção" quando tiver certeza de que está tudo funcionando — assim seu site nunca fica no ar com algo pela metade.
Cuidados importantes
- Evite guardar senhas, chaves de API ou dados sensíveis direto no repositório — prefira variáveis de ambiente ou arquivos de configuração fora do controle de versão.
- Se o seu projeto tiver dependências (como as de um
package.jsonoucomposer.json), lembre-se de incluir no hook o comando de instalação delas, senão o deploy sobe o código mas não as bibliotecas que ele precisa. - Sempre mantenha um backup recente antes de automatizar qualquer processo de deploy — assim, se algo sair diferente do esperado, você volta com tranquilidade para a versão anterior.
Pronto! Com isso você já tem um fluxo de publicação bem mais profissional e seguro. Se tiver qualquer dúvida durante a configuração, nosso suporte está por aqui para te ajudar. 🌿