Sobes.tech
Middle

Que padrões de trabalho com Git utilizou?

sobes.tech IA

Resposta da IA

  • Git-flow: Utilizado para projetos com um ciclo de lançamentos claramente definido. É conveniente para gerir a fixação de funcionalidades, correções de bugs e preparação de lançamentos. Cria ramos feature, develop, release, hotfix, master.

  • GitHub flow: Aplicado em projetos onde a prioridade é dada a lançamentos frequentes e pequenos. Modelo simples baseado numa rama principal (main ou master) e ramos para cada funcionalidade ou correção, que são fundidos imediatamente na rama principal após revisão.

  • Desenvolvimento baseado em trunk: Praticado em projetos que requerem alta frequência de integração e implantação contínua. Os desenvolvedores fazem alterações diretamente na rama principal (trunk) ou em ramos de curta duração, que se fundem rapidamente de volta. Elemento chave — Feature Toggles.

Além destes padrões principais, foi utilizado:

  • Rebase vs Merge: Dependendo da situação e dos acordos na equipa, usou-se git rebase para manter uma história limpa nas ramas locais antes de fundir, e git merge --no-ff para preservar uma história de fusões explícita na rama principal.

    # Exemplo rebase
    git checkout feature/nova-funcionalidade
    git pull --rebase origin main 
    # Resolução de conflitos, se houver
    git push -f origin feature/nova-funcionalidade 
    # Ou pedido de pull para fundir em main
    
    # Exemplo merge --no-ff
    git checkout main
    git merge --no-ff feature/nova-funcionalidade -m "Fusão de feature nova-funcionalidade em main"
    git push origin main
    
  • Squash and Merge: Frequentemente usado ao fundir ramos de funcionalidades na rama principal via Pull Request. Permite combinar vários commits do ramo de funcionalidade num único commit limpo na rama principal.

    # Exemplo de squash merge através da interface da plataforma Git (GitHub, GitLab)
    # Geralmente realizado ao confirmar o Pull Request.
    
  • Cherry-picking: Usado para transferir commits específicos entre ramos, por exemplo, para backporting de correções da rama principal para a rama de lançamento ou staging.

    # Exemplo cherry-pick
    git checkout release/v1.2
    git cherry-pick <commit_hash>