- Domine o Git com Elegância: Estratégias para Branches, Commits Semânticos e Dicas Essenciais
O Git é uma ferramenta essencial para controle de versão que permite aos desenvolvedores gerenciar seu código de forma eficaz. Este guia explora as melhores práticas para branches e commits no Git, combinando insights de desenvolvedores líderes na área.
Tipo | Descrição | Origem | Exemplo |
---|---|---|---|
main (ou master) | Branch principal do projeto. Contém código em estado de produção. | -- | main |
develop | Branch de desenvolvimento. Contém código em estado de pré-produção. | main | develop |
feature/ | Para desenvolvimento de novas funcionalidades. | develop | feature/login-system |
hotfix/ | Para correções urgentes em produção. | main | hotfix/fix-login-bug |
release/ | Preparação para nova versão de produção. | develop | release/v1.0.0 |
bugfix/ | Para correção de bugs em desenvolvimento. | develop | bugfix/header-alignment |
Prática | Descrição | Exemplo | Comando Git |
---|---|---|---|
Nomes Descritivos | Use nomes claros e concisos | ✅ feature/user-auth ❌ feature/f1 |
git checkout -b feature/user-auth |
Kebab Case | Use hífen para separar palavras | ✅ feature/email-login ❌ feature/email_login |
git checkout -b feature/email-login |
Referência à Issue | Inclua o número da issue quando relevante | feature/123-user-profile |
git checkout -b feature/123-user-profile |
Prefixos Padrão | Use prefixos consistentes | feature/ , hotfix/ , bugfix/ |
git checkout -b [prefixo]/[nome] |
Atualizações Frequentes | Mantenha a branch sincronizada com develop | -- | git merge develop |
Limpeza Pós-Merge | Remova branches após merge concluído | -- | git branch -d feature/concluida |
Etapa | Ação | Comando |
---|---|---|
1. Criar feature | Crie uma nova branch a partir da develop | git checkout develop git checkout -b feature/nova-func |
2. Desenvolver | Faça commits na sua feature branch | git add . git commit -m "✨ feat: Nova função" |
3. Atualizar | Mantenha sua branch atualizada com develop | git merge develop |
4. Finalizar | Merge da feature em develop | git checkout develop git merge feature/nova-func |
Situação | Ação Recomendada | Comando |
---|---|---|
Conflito no merge | Resolver localmente antes do push | git merge develop Resolver conflitos git add . git commit -m "🔀 merge: Resolve conflitos" |
Conflito no rebase | Resolver um commit por vez | git rebase develop Resolver conflitos git add . git rebase --continue |
Branch | Proteção | Motivo |
---|---|---|
main | Require pull request | Evita mudanças diretas em produção |
develop | Require code review | Mantém qualidade do código |
all | Require status checks | Garante que testes passem |
De acordo com a documentação do Conventional Commits, commits semânticos são uma convenção que define regras para criar um histórico de commit explícito, facilitando a criação de ferramentas automatizadas e a compreensão das alterações por toda a equipe.
- Tipo: Identifica a natureza da mudança (feat, fix, docs, etc.)
- Escopo: (opcional) Indica a seção do código afetada
- Descrição: Resumo conciso da mudança
- Corpo: (opcional) Descrição detalhada
- Rodapé: (opcional) Metadados como revisor e referências
Exemplo:
feat(login): adiciona autenticação com Google
Implementa OAuth2 para login com Google
- Adiciona dependências necessárias
- Configura rotas de autenticação
- Atualiza UI com novo botão
Reviewed-by: João Silva
Refs #123
feat
- Novo recursofix
- Correção de bugdocs
- Documentaçãostyle
- Formatação de códigorefactor
- Refatoração de códigotest
- Testeschore
- Tarefas de build, admin, etc.perf
- Melhorias de performanceci
- Mudanças na integração contínuabuild
- Modificações em arquivos de buildraw
- Mudanças em dados/configscleanup
- Limpeza de códigoremove
- Remoção de arquivos/recursos
Tipo de Commit | Emoji | Palavra-chave |
---|---|---|
Acessibilidade | ♿ :wheelchair: |
|
Adicionando um teste | ✅ :white_check_mark: |
test |
Adicionando uma dependência | ➕ :heavy_plus_sign: |
build |
Alterações de revisão de código | 👌 :ok_hand: |
style |
Animações e transições | 💫 :dizzy: |
|
Bugfix | 🐛 :bug: |
fix |
Comentários | 💡 :bulb: |
docs |
Commit inicial | 🎉 :tada: |
init |
Configuração | 🔧 :wrench: |
chore |
Deploy | 🚀 :rocket: |
|
Documentação | 📚 :books: |
docs |
Em progresso | 🚧 :construction: |
|
Estilização de interface | 💄 :lipstick: |
feat |
Infraestrutura | 🧱 :bricks: |
ci |
Lista de ideias (tasks) | 🔜 :soon: |
|
Mover/Renomear | 🚚 :truck: |
chore |
Novo recurso | ✨ :sparkles: |
feat |
Package.json em JS | 📦 :package: |
build |
Performance | ⚡ :zap: |
perf |
Refatoração | ♻️ :recycle: |
refactor |
Removendo um arquivo | 🗑️ :wastebasket: |
remove |
Removendo uma dependência | ➖ :heavy_minus_sign: |
build |
Responsividade | 📱 :iphone: |
|
Revertendo mudanças | 💥 :boom: |
fix |
Segurança | 🔒️ :lock: |
|
SEO | 🔍️ :mag: |
|
Tag de versão | 🔖 :bookmark: |
|
Teste de aprovação | ✔️ :heavy_check_mark: |
test |
Testes | 🧪 :test_tube: |
test |
Texto | 📝 :pencil: |
|
Tipagem | 🏷️ :label: |
|
Tratamento de erros | 🥅 :goal_net: |
|
Limpeza de código | 🧹 :broom: |
cleanup |
Dados | 🗃️ :card_file_box: |
raw |
git commit -m "🎉 init: Commit inicial"
git commit -m "✨ feat: Sistema de login"
git commit -m "🐛 fix: Corrige loop infinito"
git commit -m "📚 docs: Atualiza README"
git commit -m "♻️ refactor: Simplifica função"
Comando | Descrição |
---|---|
git clone url-do-repositorio |
Clona um repositório remoto |
git init |
Inicializa um novo repositório Git |
git add . |
Adiciona todos os arquivos para stage |
git commit -m "mensagem" |
Registra alterações com mensagem |
git branch -M main |
Renomeia a branch atual para main |
git remote add origin url |
Adiciona um repositório remoto |
git push -u origin main |
Envia commits e configura upstream |
git fetch |
Busca atualizações sem integrar |
git pull origin main |
Atualiza branch local com remota |
git push --force-with-lease |
Force push seguro |
git revert commit-id |
Reverte um commit específico |
git reset --hard commit-id |
Redefine para commit específico |
git commit --amend |
Altera último commit |
git cherry-pick commit-hash |
Aplica commit específico |
git init
git remote add origin git@github.com:usuario/projeto.git
git branch -M main
git push -u origin main
fork
- Cópia de um repositório para sua contaissues
- Ferramenta para gerenciar tarefas/bugspull request
- Solicitação para integrar alteraçõesgist
- Compartilhamento de trechos de código
Créditos:
🕹 Feito por Alvaro Navega
Insights dos artigos:
Padrões de commits do artigo de Iuri Silva
Entendendo as Nomenclaturas de Commits no Git do artigo de Augusto Simionato