Início/

Padronização com GitFlow

  • 24/09/2022
  • 4 min
  • Git

    Github

Depois que aprendemos a trabalhar com as Branchs e os Merges, é importantes nós criarmos alguns padrões e organização do projeto, para não ficar aquela bagunça no histórico. Com esse pensamento o HolandêsVincent Driessenteve a brilhante ideia de criar o GitFlow.
O Gitflow é apenas uma ideia abstrata do fluxo de trabalho normal do Git, ou seja, ele dita que tipos de branchs configurar e como realizar o merge.

Branchs e Merge

Antes de entendermos o GitFlow, é necessário termos dois conceito que são fundamentais, branch e merge bem claro, para isso sinta-se avontade de ler meus dois artigo onde eu explico bem isso, Conceito de Branch - Git e Github onde explico bem sobre a Branch, e Conceito de Merge - Git e Github onde falo sobre Merge.

Fluxo do GitFlow

Para ficar mais claro, podemos classificar o GitFlow em dois tipos de Branch:

  1. Principais: São as Branch Master e Develop;
  2. Suporte: São as conhecidas como Feature, Release e Hotfix.

Regras das branchs:

  • Master: Utilizada para receber os commits estáveis que foram desenvolvidos na Develop, digamos que são códigos prontos para produção.
  • Develop: A branch que irá desenvolver todas as novas Features, após revisar e estar estável, ela será responsavél por realizar um merge na Master.
  • Features: São as branchs criadas a partir da Develop que irão desenvolver uma funcionalidade especifica, fazendo Merge na Develop também.
  • Releases: Uma vez que se tem uma nova Feature incorporada na Develop, é preciso prepará-la para entrar em produção, o que não pode ser feito levando-a apenas para a Master, é preciso utilizar uma outra Branch de suporte, chamada Release.
    Pode ser que apenas após a criação de um conjunto de novas Features que você tenha uma Release pronto. Porém, uma vez que essas Features estejam prontas na Develop, será possível uní-las em um Branch Release.
  • Hotfixes: São branches para realizar correçõs especificas e criticas que são encontradas em produção, criada a partir da Master, deve ser unida tanto com Develop quanto com a Master.

Após entender a base de todo conceito, existe uma ferramenta para auxiliar a criação e exclusão de branch, chamado GitFlow Extensão.

GitFlow Extensão:

O GitFlow Extensões é uma extensão que auxilia no desenvolvimentos de projetos que utilizam Git, ele tem como objetivo automatizar algumas funções repetivias no processo das branchss, o que ajuda a poupar algumas linhas no terminal.
Para começar a utilizar o GitFlow Extensões, depois de iniciar o Git com o comando git init, basta digitar:

$ git flow init

Ele dá a liberdade de você alterar o nome das Branch de produção, ou a develop, como mudar os prefixos das outras Branches, por exemplo:
Alterar a branch Feature para Feat, dando uma maior liberdade para cada pessoa/time.

Usando $ git flow init [-d] , ele aceita todos os nomes automaticamente.

Primeira feature:

Para criar a primeira Feature, o processo é extremamente simples:

$ git flow feature start <NomeDaBranch>

Com isso ele nos retorna algumas coisas, no Summary of actions:

  1. Uma nova branch foi criada 'feature/formulairo' baseada na 'develop'.
  2. Agora você está na branch 'feature/formulario'.

Encerrando a feature:

Após criar a primeira Feature, digamos que você já implementou e commitou todas as funcionalidades e agora precisa dar um Merge na Develop e excluir ela, para isso rodamos:

$ git flow feature finish <NomeDaBranch>

Voltando para o Summary of actions:, ele explica o que foi realizado:

  1. A branch de feature 'feature/formulario' foi mesclada com a 'develop'.
  2. Branch de feature 'feature/formulario' foi deletada localmente.
  3. Agora você está na branch 'develop'.

Chegamos ao fim, com isso você será capaz de organizar a linha do tempo do seu projeto, a ideia do GitFlow não é fundamental para o desenvolvedor, mas ao longo do tempo, conforme o projeto escala e existem diversas pessoas trabalhando em conjunto ele ajuda a manter a clareza no projeto, e ajuda a padronizar a forma que é realizado o processo de branchs.