Workflow Git para Projetos Android

Este workflow utiliza uma abordagem baseada em Git Flow, adaptada para desenvolvimento Android. A seguir, descrevemos cada branch e seu propósito.

Branch principal (master)

Contém o código estável em produção. Novas versões são mescladas aqui e etiquetadas com tags após lançamentos.

Origem Padrão de Nomes Exemplo Destino de Merge Ambiente
Produção

Branch de desenvolvimento (develop)

Criada a partir de master, representa o código em progresso para a próxima versão. É a base para desenvolvimento colaborativo.

Origem Padrão de Nomes Exemplo Destino de Merge Ambiente
master release-versao Desenvolvimento

Branch de funcionalidade (feature)

Utilizada para desenvolver novas funcionalidades. Pode ser descartada ou mesclada em develop após conclusão.

Origem Padrão de Nomes Exemplo Destino de Merge Ambiente
develop feature-versao feature-2.0.0 develop Desenvolvimento

Branch de pré-lançamento (release)

Destinada a testes finais antes da publicação. Permite ajustes em metadados como versão do aplicativo.

Origem Padrão de Nomes Exemplo Destino de Merge Ambiente
develop release-versao release-2.0.0 develop e master Testes

Branch de correção pré-lançamento (releace-fix)

Usada para corrigir bugs identificados durante testes na branch release.

Origem Padrão de Nomes Exemplo Destino de Merge Ambiente
release release-fix-versao release-fix-2.0.0 release Testes

Branch de correção de bugs (fix)

Destinada a resolver problemas encontrados em produção. Diferencia-se de hotfixes em contextos Android.

Origem Padrão de Nomes Exemplo Destino de Merge Ambiente
master fix-versao fix-2.0.1 release Testes

Branch de refatoração (refactor)

Utilizada para melhorar código existente, sem necessidade de inclusão imediata na próxima versão.

Origem Padrão de Nomes Exemplo Destino de Merge Ambiente
develop refactor-descricao refactor-interface develop Desenvolvimento

Convenções de Commits

Adote prefixos descritivos para mensagens de commmit:

  • feat: nova funcionalidade
  • fix: correção de bug
  • docs: alterações em documentação
  • style: formatação (não afeta execução)
  • refactor: refatoração de código
  • test: adição ou modificação de testes
  • chore: ajustes em build ou ferramentas

Exemplo: fix(perfil): resolver crash ao carregar foto

Fluxo de Trabalho Prático

Inicialização do Projeto

Crie a branch master e, a partir dela, inicialize develop.

Desenvolvimento de Funcionalidades

  1. Crie feature-versao a partir de develop. Para equipes, use ramificações individuais como feature-versao-nome.
  2. Realize commits e pushes na branch individual para sincronização.
  3. Após conclusão, mescle as ramificações em feature-versao, integre mudanças de develop e resolva conflitos.
  4. Envie um Merge Request (MR) para develop e delete a branch de funcionalidade.

Testes e Correções

  1. Ao aceitar MRs em develop, crie release-versao para testes.
  2. Para bugs reportados, crie release-fix-versao a partir de release-versao, corrija e envie MR de volta.
  3. Repita até aprovação dos testes.

Lançamento

  1. Compile o pacote de produção a partir de release-versao.
  2. Envie MR para master e crie uma tag (ex: v2.0.0).
  3. Integre mudanças em develop e delete release-versao.

Correções em Produção

  1. Crie fix-versao a partir de master, corrija o bug e envie MR para release-versao.
  2. Siga o processo de testes similar ao lançamento.
  3. Para bugs críticos, atualize metadados e publique imediatamente.

Refatorações

  1. Crie refactor-descricao de develop.
  2. Implemente melhorias, teste e envie MR para develop.

Revisão de Código e Boas Práticas

Em projetos com múltiplos desenvolvedores, realize revisões de código via MR para garantir qualidade e consistência.

No Android Studio, ao atualizar código (pull), selecione Merge e Using Stash para evitar conflitos. Evite Rebase para manter histórico claro.

Comandos Git Essenciais

Criação e Manipulação de Branches

# Criar e mudar para nova branch
git checkout -b nova-branch

# Mesclar branch atual com outra
git merge --no-ff outra-branch

# Deletar branch local
git branch -d branch-local

# Deletar branch remota
git push origin --delete branch-remota

Gerenciamento de Alterações

# Armazenar alterações temporariamente
git stash

# Listar stashs
git stash list

# Aplicar stash específico
git stash apply stash@{0}

# Descartar alterações no diretório de trabalho
git checkout -- arquivo.txt

# Resetar para commit específico
git reset --hard commit-id

Comandos para Commits

# Modificar último commit
git commit --amend -m "nova mensagem"

# Rebase interativo para ajustar commits
git rebase -i HEAD~3

# Cherry-pick de commit de outra branch
git cherry-pick commit-id

Dicas para Evitar Conflitos

  • Sincronize com o repositório remoto antes de iniciar trabalho e antes de cada commmit.
  • Divida alterações em commits pequenos e descritivos.
  • Comunique alterações em arquivos compartilhados imediatamente à equipe.
  • Defina responsabilidades claras para evitar sobreposições.

Operações Avançadas

Limpeza do Diretório de Trabalho

O comando git clean remove arquivos não rastreados. Use com cautela, pois deleta permanentemente.

# Visualizar arquivos a serem removidos
git clean -n

# Remover arquivos não rastreados
git clean -f

# Remover também diretórios não rastreados
git clean -df

Revertendo Alterações

Para desfazer commits já enviados ao remoto, use git revert para criar um novo commit que anula mudanças, ou git reset seguido de push forçado para remover commits.

# Reverter commit específico
git revert commit-id

# Resetar e forçar push
git reset --hard commit-id
git push origin branch --force

Use git reset --soft para manter alterações no diretório de trabalho ao desfazer commits.

Tags: Git Android Development GitFlow Branching Strategy Code Review

Publicado em 6-30 20:26