Primeira coisa, como muitas vezes me disseram, o git não é um framework de implementação. Isso afirmou, como Paul Gear disse, a maneira mais fácil é usar controles remotos.
Primeiro, configure o controle remoto na máquina que irá empurrar. O alvo deve ser um repositório vazio.
git remote add server1 ssh://[email protected]/home/username/gitrepo
selecione sua filial na máquina de origem:
git checkout featurebranch1
Por fim, envie os dados para o seu controle remoto:
git push server1 localbranch:destinationbranch
Ou você pode definir seu envio para o envio de dados e enviá-lo para qualquer que seja o ramo do envio de dados.
git config push.default upstream
Como mencionei anteriormente, o git remoto deve ser um repositório vazio para aceitar push como este.
Talvez o uso de um repositório vazio não seja suficiente. Nesse caso, no lado do recebimento, talvez você queira fazer alguma coisa quando receber os dados, como, por exemplo, fazer o checkout dos arquivos em um diretório diferente (o repositório deve permanecer nu, lembre-se). Você pode fazer isso usando um gancho de pós-recebimento criando um arquivo de script em / path / to / bare / repository / hooks / post-recebimento da seguinte forma:
#!/bin/sh
GIT_WORK_TREE=/var/www/html git checkout -f
chmod
para executável. Isso fará o checkout da ramificação master
no diretório especificado.