GIT Flow é um módulo extra para GIT para gerenciar o fluxo de desenvolvimento padrão usando GIT.
Hoje está tão difundido que praticamente todas as distribuições que tem o GIT tem um pacote para GIT Flow (incluindo Windows).
(ou, pelo menos, o esperado)
Praticamente comum em SCVs com criação de branchs rápidas (como o GIT).
git flow init
Branch name for production releases: [master]
Branch name for "next release" development: [develop]
How to name your supporting branch prefixes?
Feature branches? [feature/]
Release branches? [release/]
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? []
(Branches de suporte são experimentais: branches criados a partir do master que nunca são feitos merge de volta.)
git flow feature start minha_feature
Irá fazer um fork do branch de desenvolvimento com o nome "minha_feature".
(feature start
vai começar outro branch a partir do desenvolvimento,
não do branch de feature atual.)
git flow feature finish
Faz o merge do branch de desenvolvimento com o branch da feature e, se tudo ocorreu sem problemas, faz o merge do branch da feature de volta pro branch de desenvolvimento e destrói o branch da feature.
git flow release start versão
Cria um branch de release a partir do master e faz um merge com o branch de desenvolvimento.
git flow release finish
Faz o merge da release atual para o master, destrói o branch de release, bota a tag da versão no commit, faz o merge do branch master com desenvolvimento.
git flow hotfix start fuckingdevs
Cria um branch a partir do master, passando por cima do desenvolvimento.
git flow hotfix finish
Faz o merge do branch de hotfix de volta pro master, faz o merge do master com o branch de desenvolvimento.
Pequeno lembrete: todos os branches do git flow são locais.
Por que isso é importante?
Com branches locais, qualquer alteração é feita localmente na máquina.
git svn dcommit
vai mandar o branch atual pro repositório, então se
você estiver no seu master... Vai o que estiver depois do git flow release finish
.
O conceito de fluxos do GIT está tão difundido que já existem soluções prontas para:
Ou seja: tudo se resume à: git flow feature start
, fazer as alterações, verificar se os
testes locais passam e fazer um git push
.