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:
- Principais: São as Branch Master e Develop;
- 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:
- Uma nova branch foi criada 'feature/formulairo' baseada na 'develop'.
- 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:
- A branch de feature 'feature/formulario' foi mesclada com a 'develop'.
- Branch de feature 'feature/formulario' foi deletada localmente.
- 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.