Main e Master Branch no Git: o que é e por que você precisa de uma branch principal

Autor: IT Sectr Publicado: 2026-05-10 Tempo de leitura: 8 min

Main Branch (anteriormente Master) é a branch principal do Git que contém código de produção estável pronto para implantação. Cada commit em main corresponde a uma versão de lançamento do projeto, e a própria branch é protegida contra alterações diretas e serve como fonte única de verdade para toda a equipe. De acordo com GitHub, 2020, desde outubro de 2020, a nova branch padrão é chamada main em vez de master.

Principais pontos

  • Main / Master Branch — uma branch estável com código de produção, cada commit é uma versão de lançamento.
  • Proteção contra alterações diretas — pushes diretos para main são proibidos, todas as alterações passam por branches release ou hotfix.
  • Transição de master para main ocorreu em 2020 para terminologia inclusiva em todas as plataformas Git.
  • Git Flow e GitHub Flow usam main de forma diferente: no Git Flow apenas para lançamentos, no GitHub Flow é a branch central.
  • Tags de versão em cada commit de lançamento em main permitem reverter facilmente para qualquer versão anterior.

O que é Main / Master Branch no Git

Main Branch (ou Master — dependendo das configurações do repositório) é a branch padrão criada ao inicializar qualquer repositório Git. É a branch principal do projeto e contém código pronto para implantação em produção.

Ao contrário de develop, onde o trabalho diário com novas funcionalidades está a todo vapor, main é a vitrine do projeto. Cada versão do código em main passou por um ciclo completo: desenvolvimento em uma branch feature, integração em develop, preparação do lançamento em uma branch release e testes finais. Só depois disso as alterações chegam a main.

Princípio chave: main deve ser sempre estável. Se um erro for encontrado em main, significa que um hotfix urgente precisa ser lançado fora de hora. Portanto, em projetos profissionais, main é protegida contra alterações acidentais por regras de proteção de branch.

De acordo com Git Book, main não é uma branch especial com propriedades únicas, mas uma referência normal a um commit que é convencionalmente considerada a principal. O Git não faz distinção entre main e qualquer outra branch no nível do sistema.

Transição de master para main

Historicamente, a branch padrão no Git era chamada master. Em junho de 2020, o movimento Black Lives Matter chamou a atenção para os termos master e slave na indústria de TI. O GitHub anunciou a transição para o termo main para a branch padrão.

Desde outubro de 2020, todos os novos repositórios no GitHub são criados com a branch main. GitLab e Bitbucket também implementaram suporte para main como nome padrão. O Git 2.28 (julho de 2020) adicionou a opção init.defaultBranch para configurar o nome da branch padrão.

Tecnicamente, renomear uma branch existente de master para main é uma operação simples. O principal desafio é atualizar todas as referências nas configurações de CI/CD, documentação e repositórios locais dos desenvolvedores.

Para renomear uma branch em um repositório existente, execute:

bash
# Renomear localmente master para main
git branch -m master main

# Atualizar repositório remoto
git push -u origin main

# Excluir master antigo no servidor
git push origin --delete master

# Atualizar HEAD no servidor
# (via interface web do GitHub: Settings → Branches → Default branch)

Papel do main no Git Flow e GitHub Flow

Git Flow e GitHub Flow definem o papel da branch main de forma diferente. A escolha do modelo depende do tamanho da equipe, frequência de lançamentos e requisitos de estabilidade do código.

CaracterísticaGit FlowGitHub Flow
Papel do mainApenas versões de lançamentoBranch central de desenvolvimento
Branches adicionaisDevelop, Release, HotfixApenas branches feature
Frequência de lançamentosA cada 1-4 semanasVárias vezes ao dia
ComplexidadeAltaBaixa
Quando escolherApps mobile com ciclos de lançamentoServiços web com implantação contínua

Para desenvolvimento mobile, Git Flow é o padrão, já que publicar um aplicativo na App Store e Google Play tem ciclos de lançamento fixos. GitHub Flow é mais adequado para projetos web que podem ser implantados várias vezes ao dia.

GitHub Flow — abordagem simplificada

No GitHub Flow, não há branch develop. Todas as branches feature são criadas diretamente de main e, ao finalizar, são mescladas de volta via Pull Request. Cada mesclagem em main aciona automaticamente a implantação em produção. Este modelo requer um alto nível de automação de testes e disciplina da equipe.

No GitHub Flow, não há branch develop. Todas as branches feature são criadas diretamente de main e, ao finalizar, são mescladas de volta via Pull Request. Cada mesclagem em main aciona automaticamente a implantação em produção. Este modelo requer um alto nível de automação de testes e disciplina da equipe.

Proteção da branch main

Proteção de branch para main é uma configuração obrigatória em qualquer projeto comercial. Sem ela, um push acidental pode enviar código incompleto para produção ou quebrar um aplicativo em funcionamento para todos os usuários.

  • Require pull request — push direto para main é proibido. Todas as alterações via PR com revisão.
  • Require approvals — mínimo 2 aprovações para mesclar em main (caso um revisor perca algo).
  • Require status checks — todas as verificações de CI/CD devem ser bem-sucedidas antes de mesclar.
  • Require up-to-date — o PR deve ser baseado no último commit de main.
  • Include administrators — a proteção se aplica até mesmo aos proprietários do repositório.
  • Require signed commits — todos os commits em main devem ser assinados com chave GPG.

Configurar todas as seis regras é o padrão para projetos mobile com audiência de 10.000+ usuários. Para projetos pequenos, as três primeiras regras são suficientes.

Comparação de níveis de proteção para diferentes tipos de projeto

O nível de proteção do main depende da escala do projeto. Uma startup pode se virar com proteção mínima, enquanto um aplicativo empresarial requer restrições máximas.

Lançamentos e tags em main

Tagging é a prática de criar referências nomeadas para commits específicos em main. Cada tag corresponde a uma versão do aplicativo lançada em produção. Isso permite alternar rapidamente para qualquer versão anterior para depuração ou correção.

O padrão de nomenclatura de tags no desenvolvimento mobile é SemVer (Versionamento Semântico): v1.2.3, onde o primeiro número é a versão principal (mudanças significativas), o segundo é a versão secundária (novas funcionalidades) e o terceiro é o patch (correções).

Uma tag é criada após a mesclagem da branch release em main. Este commit é então compilado no CI/CD, assinado e enviado para a loja de aplicativos. Se um erro for encontrado na tag, uma branch hotfix é criada a partir dessa tag.

bash
# Criar tag de lançamento anotada
git tag -a v2.4.1 -m "Release version 2.4.1"

# Enviar tag para o servidor
git push origin v2.4.1

# Ver todas as tags no repositório
git tag -l "v2.*"

# Criar branch hotfix a partir de uma tag específica
git checkout -b hotfix/crash-fix v2.4.1

Hierarquia de branches do Git Flow

Entender a hierarquia de branches no Git Flow é a base para organizar adequadamente o desenvolvimento colaborativo. Cada tipo de branch tem sua própria fonte, propósito e regras de mesclagem.

  • Main (Nível 1) — a branch raiz, contém apenas versões de lançamento. Criada ao inicializar um repositório.
  • Develop (Nível 2) — criada de main no início do projeto. Contém código de integração de todas as funcionalidades.
  • Feature (Nível 3) — criada de develop. Desenvolvimento isolado de funcionalidades individuais.
  • Release (Nível 2) — criada de develop. Preparação de um lançamento específico para publicação.
  • Hotfix (Nível 2) — criada de main. Correções urgentes de erros críticos de produção.

Regra importante: feature nunca é mesclada diretamente em main. feature → develop → release → main é a cadeia de mesclagem correta. Violar esta regra anula o propósito de todo o modelo Git Flow.

Exemplos de comandos para trabalhar com main

Considere um cenário: a equipe concluiu a preparação do lançamento v2.5.0. A branch release foi revisada e está pronta para ser mesclada em main. Após a mesclagem, uma tag é criada e o lançamento é publicado.

bash
# Alternar para main e atualizar
git checkout main
git pull origin main

# Mesclar branch release verificada
git merge --no-ff release/2.5.0

# Criar tag de lançamento
git tag -a v2.5.0 -m "Release 2.5.0 - Payment integration"

# Enviar main e tag para o servidor
git push origin main --tags

A flag --no-ff (sem avanço rápido) garante a criação de um commit de mesclagem, mesmo que a mesclagem pudesse ser feita simplesmente movendo o ponteiro. Isso preserva a informação de que as alterações vieram de uma branch release, facilitando a análise do histórico.

Trabalhando com hotfix através de main

Se um erro crítico for descoberto em produção, o processo difere de um lançamento normal. Um hotfix é criado a partir de main e, após a correção, é mesclado tanto em main quanto em develop.

Se um erro crítico for descoberto em produção, o processo difere de um lançamento normal. Um hotfix é criado a partir de main e, após a correção, é mesclado tanto em main quanto em develop.

bash
# Criar branch hotfix a partir de main
git checkout main
git checkout -b hotfix/2.5.1-crash-fix

# Corrigir e fazer commit
git add src/fix/
git commit -m "Fix crash on login screen"

# Mesclar hotfix de volta em main
git checkout main
git merge --no-ff hotfix/2.5.1-crash-fix
git tag -a v2.5.1 -m "Hotfix 2.5.1"
git push origin main --tags

# Mesclar hotfix também em develop
git checkout develop
git merge --no-ff hotfix/2.5.1-crash-fix
git push origin develop

# Excluir branch hotfix
git branch -d hotfix/2.5.1-crash-fix

Perguntas frequentes

A branch main pode ser excluída?

Tecnicamente — sim, é uma referência normal a um commit. Mas na prática — não, pois main é a branch padrão e a maioria das plataformas não permite excluir a branch definida como branch padrão. Em vez de excluir, crie uma nova branch padrão e depois exclua a antiga.

Como corrigir um erro em main sem hotfix?

Se o erro não for crítico, use o processo normal: crie uma branch feature a partir de develop, corrija o erro, faça uma revisão de código e aguarde o próximo ciclo de lançamento. Hotfix é usado apenas para erros críticos que bloqueiam o trabalho dos usuários.

Qual a diferença entre main e origin/main?

main é uma branch local no seu computador. origin/main é um cache local do estado da branch remota no servidor. O comando git fetch atualiza origin/main, enquanto git pull mescla imediatamente as alterações na sua main local.

Como mover main para outro diretório?

Use git clone para copiar todo o repositório para um novo diretório. Se precisar alterar a URL remota, execute git remote set-url origin. Para alterar o diretório de trabalho sem copiar o repositório, use git worktree add.

É necessário proteger main se a equipe é pequena?

Sim, mesmo em uma equipe de duas pessoas, a proteção de main é justificada. Um push acidental com um comando incorreto pode sobrescrever o histórico. A proteção mínima — proibir pushes diretos e exigir PRs — leva 5 minutos para configurar e evita horas de recuperação de dados.

Resumo

  • Main / Master Branch — a branch principal do Git contendo código de produção estável, cada commit é uma versão de lançamento.
  • Transição de master para main tornou-se padrão da indústria desde 2020, apoiada por todas as principais plataformas Git.
  • Git Flow usa main apenas para lançamentos, enquanto GitHub Flow a torna a branch central com implantação contínua.
  • Proteção de main inclui 6 regras: PR, aprovação, verificações CI/CD, atualização, inclusão de administradores, commits assinados.
  • Tagging de cada lançamento em main usando SemVer garante acesso rápido a qualquer versão do aplicativo.
  • Branches hotfix são criadas a partir de main para correções urgentes e são mescladas tanto em main quanto em develop.
  • Recomendação: sempre use --no-ff ao mesclar em main e configure regras de proteção de branch antes do primeiro commit no projeto.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também