Uma das formas de publicar um branch local para um servidor de produção é usar o recurso de hooks nativo do git.

Vamos aqui listar os passos para configurar esse recurso e conseguir enviar as alteração para o servidor usando apenas um único comando na máquina local.

No lado de produção vamos acessar o servidor e criar uma pasta para abrigar os arquivos do projeto. Eu prefiro utilizar o nome do branch que está associado ao ambiente de produção (nesse caso será o main) mas você pode usar qualquer nome, inclusivo o nome do seu projeto.

ssh user@server
mkdir pasta-do-branch

Em seguida, vamos criar um ambiente git vazio para abrigar os comando de hook necessários.

git init --bare ~/projeto.git

Na pasta hooks desse ambiente criado (entre na pasta nome-do-projeto.git) vamos criar o arquivo post-receive.sample e inserir o código nele por esse abaixo.

#!/bin/bash
TARGET="/pasta-do-branch"
GIT_DIR="/projeto.git"
BRANCH="main"

while read oldrev newrev ref
do
  if [ "$ref" = "refs/heads/$BRANCH" ];
  then
    echo "Ref $ref received. Deploying ${BRANCH} branch to production..."
    git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f $BRANCH
  fi
done

Esse arquivo, post-receive, deve ser marcado como executável.

chmod +x post-receive

Na máquina local vamos adicionar o branch remoto.

git remote add projeto user@server:project.git

Dessa forma, de agora em diante, para publicar o código do branch basta executar o comando abaixo.

git push projeto main

Para se aprofundar nos detalhes desse recurso, consulte a página desse link:
https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

Categories: Tutorial