Este guia apresenta o fluxo GitFlow, comandos principais, boas práticas e erros comuns para equipes que utilizam Git em seus projetos. Ele serve como referência para aplicar o modelo de branching GitFlow no dia a dia.
O GitFlow organiza o trabalho em diferentes tipos de branches:
- main:
- Contém o código de produção.
- Cada versão lançada é marcada com uma tag (ex.:
1.0.0).
- develop:
- Branch principal para desenvolvimento.
- Acumula as mudanças antes de serem liberadas.
- feature:
- Para novas funcionalidades.
- Criado a partir de
develope integrado de volta ao final.
- release:
- Para preparar uma nova versão.
- Criado a partir de
develope integrado aomainedevelop.
- hotfix:
- Para corrigir problemas críticos encontrados em produção.
- Criado a partir de
maine integrado aomainedevelop.
Use o comando abaixo para iniciar o desenvolvimento de uma nova funcionalidade:
git flow feature start nome-da-featureApós terminar a funcionalidade, finalize-a:
git flow feature finish nome-da-featureUse o comando para iniciar a preparação de uma nova versão:
git flow release start versãoFinalize a release e integre-a ao main e develop:
git flow release finish versãoPara corrigir um problema em produção, crie uma branch de hotfix:
git flow hotfix start versãFinalize o hotfix e integre-o ao main e develop:
git flow hotfix finish versão-
Listar branches ativos:
git branch
-
Ver tags existentes:
git ta
-
Ver histórico de commits:
git log --oneline
-
Mensagens de commit semânticas:
- Use o padrão Conventional Commits:
feat: Nova funcionalidade.fix: Correção de bug.chore: Alterações auxiliares (documentação, scripts).
- Use o padrão Conventional Commits:
-
Versionamento semântico:
- Formato:
X.Y.ZX: Mudança de versão principal.Y: Adição de funcionalidades.Z: Correções de bugs.
- Formato:
-
Atualização frequente dos branches:
-
Suba alterações e tags frequentemente:
git push origin --al git push origin --tags
-
-
Automatize validações:
- Use Git Hooks para validar tags ou mensagens de commit.
- Configure pipelines CI/CD para garantir qualidade e consistência.
-
Apague localmente:
git tag -d nome-da-tag
-
Apague no repositório remoto:
git push origin :refs/tags/nome-da-tag
- Sempre use os comandos
git flow finishpara concluir branches e evitar inconsistências.
-
Certifique-se de sempre atualizar os branches remotos:
git pull origin main git pull origin develo
-
Configuração inicial:
-
Instale o GitFlow:
sudo apt install git-flo
-
Inicialize o fluxo no repositório:
git flow init
-
-
Uso diário:
-
Criar e finalizar features:
git flow feature start nome-da-feature git flow feature finish nome-da-feature
-
Preparar e finalizar releases:
git flow release start versão git flow release finish versão
-
Resolver hotfixes:
git flow hotfix start versão git flow hotfix finish versão
-
Crie um hook commit-msg para garantir mensagens semânticas:
#!/bin/sh
COMMIT_MSG_FILE=$1
if ! grep -qE '^(feat|fix|chore): .+' "$COMMIT_MSG_FILE"; then
echo "A mensagem de commit deve seguir o padrão 'feat: descrição' ou 'fix: descrição'."
exit 1
fiUse o hook pre-push para garantir que as tags seguem o padrão semântico:
#!/bin/sh
git tag | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' || {
echo "Tag inválida. Use o formato X.Y.Z."
exit 1
}Configure ferramentas como GitHub Actions para validar automaticamente:
- Mensagens de commit.
- Versionamento correto.
- Releases no
mainoudevelop.