Skip to content

Instantly share code, notes, and snippets.

@wjuniorw
Last active September 28, 2023 18:43
Show Gist options
  • Select an option

  • Save wjuniorw/e3b443389448d8f085ea264f201ee12c to your computer and use it in GitHub Desktop.

Select an option

Save wjuniorw/e3b443389448d8f085ea264f201ee12c to your computer and use it in GitHub Desktop.

Gitflow

O que é o gitflow?

  • Primeiramente oque não é o Gitflow

    • Não é um software
    • Não é uma biblioteca ou framewok

O git flow pode ser adotado como:

  • Modelo
  • estrategia
  • fluxo de trabalho

Porque?

  • Para organizar as tarefas e manter uma versão estável do código do projeto e trazer agilidade sem perder estabilidade para as próximas versões estáveis do projeto.

Como?

  • Cada equipe pode ter o próprio gitflow, a estratégia pode variar de acordo com o projeto. Por exemplo caso o projeto tenha opções de entrega e integração continua ou não, o gitflow pode ir além do time que desenvolve o projeto em si, envolvendo o time de Garantia de Qualidade, onde determinadas tarefas podem ser refeitas caso não cumpram de alguma forma os requisitos desta em sua totalidade.

Exemplo

  • Comumente um Gitflow segue alguns passos em determinadas situações, as situações geralmente são:

    • feature: Nova funcionalidade em um projeto.
    • bugfix: Correções de bugs em features em andamento.
    • hotfix: Correções de bugs em ambiente produtivo.
    • release: Lançamento de novas versões.
  • Para cada situação é criado uma branch de curta duração, nas quais são baseadas em branchs de longa duração. São essas as branchs principais:

    • main Nela fica todo o código de produção. Todas as novas funcionalidades que estão em desenvolvimento são mescladas ou associadas à ela. Para interagir com essa branch, é necessário criar uma branch Hotfix ou um nova branch Release.

      Lembrando que essa branch é "travada", nao podendo ser feito commits na mesma, aceitando alterações apenas mediante Pull Requests.

    • develop O código da próxima versão fica armazenado nessa branch. Sua principal finalidade é ser como uma linha do tempo com os últimos desenvolvimentos, ou seja, features, bugfixes, funcionalidades que ainda não foram publicadas e serão posteriormente associadas à branch main.

      Lembrando que essa branch é "travada", nao podendo ser feito commits na mesma, aceitando alterações apenas mediante Pull Requests.

  • Branch Feature

    • A branch Feature é usada para o desenvolvimento de features e bugfixes. Criada a partir da branch develop, automaticamente deve ser removida assim que fazer o merge com a branch de origem a develop.

      Além disso, é necessário destacar que a Feature não pode ter interação com a main, somente com a Develop.

  • Branch bugfix

    • A branch bugfix é criada a partir da develop para fazer correções localizadas em features novas em processo de testes. Assim que é concluída, deve se fazer o merge com a develop logo após a finalização do merge ela deve ser apagada.
  • Branch Hotfix

    • A branch Hotfix é criada a partir da main para fazer correções rápidas localizadas no sistema já em produção. Assim que concluída, ela deve ser apagada logo após a finalização do merge com a main e a develop.
  • Branch Release

    • A branch Release é a finalização de um processo de desenvolvimento, é criada a partir da develop e mesclada com a main onde teremos todas as features, bugfixes e hotfixes do ciclo atual. Após esse merge podemos gerar tanto versões de teste em homologação quanto de produção. Assim que concluída, ela se apaga logo após a finalização do merge com a main e a develop. A partir dai, podemos assim gerar uma tag da nova versão a partir da main.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment