Eu tenho alguns sites todos hospedados no mesmo serviço de hospedagem na hospedagem compartilhada. Meu host suporta o Git e eu tenho acesso SSH a ele, e também tenho a configuração do Git no meu laptop.
Eu quero fazer isso para que, quando eu fizer um "mestre de origem do git push", ele atualize automaticamente os arquivos no meu servidor da web e também salve um backup dos arquivos do commit anterior para que eu possa reverter facilmente, se quiser. Isso é possível?
Respostas:
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.Coloque isso no
hooks/
diretório comopost-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.
fonte
post-receive
gancho, que é realmente apenas um script onde você pode colocar o que quiser.A maneira mais simples de atualizar a árvore de trabalho do repositório para o qual você está empurrando é configurando
git config receive.denyCurrentBranch updateInstead
no lado do receptor. Consulte https://git-scm.com/docs/git-config/#git-config-receivedenyCurrentBranchA resposta de Ryan com ganchos de confirmação de postagem é melhor, pois permite fazer check-out em algum local diferente (você provavelmente não deseja ter o .git na sua pasta da web). Mas, nesse nível, pode ser uma boa ideia usar alguma ferramenta de implantação existente, como a sleske disse nos comentários.
fonte