3. APRESENTAÇÃO
Em seu núcleo, o modelo de desenvolvimento é muito inspirado
nos modelos existentes, ou sejam o "repo" central possui duas
ramificações principais "branchs" com vida infinita:
- master
- develop
4. MASTER / DEVELOP
Após criado (uma única vez) o branch "master", o mesmo deverá então
ser clonado com objetivo de criar o outro branch chamado "develop".
Consideramos "origin/master" como o branch principal e onde o código
fonte da HEAD sempre reflete um estado pronto para produção,
e consideramos "origin/develop" ser o branch onde o código fonte de
HEAD sempre reflete um estado com as últimas mudanças de develop
entregues para a próxima versão.
5. BRANCH AUXILIAR
Paralelo aos principais branchs, "master" e
"develop", nosso modelo de desenvolvimento usa
uma variedade de branchs de apoio para auxiliar o
desenvolvimento paralelo entre os membros da
equipe, facilitar o rastreamento de recursos, se
preparar para lançamentos de produção e ajudar a
resolver rapidamente problemas de produção,
contudo, esses branchs sempre terão tempo de vida
limitado, já que serão removidos eventualmente.
Os tipos de Branchs Auxiliar mais comuns são:
- Feature
- Release
- Hotfix
6. CRIANDO BRANCH AUXILIAR
Imagine que vc deseja criar uma branch auxiliar do tipo Feature a partir da branch
develop
$ git checkout -b myfeature develop
Switched to a new branch "myfeature"
Após desenvolvimento concluído em "myfeature" é feito merge do mesmo com develop
e depois removido (opcional).
$ git checkout develop
Switched to branch 'develop'
$ git merge --no-ff myfeature
Updating ea1b82a..05e9557
(Summary of changes)
$ git branch -d myfeature
Deleted branch myfeature (was 05e9557).
$ git push origin develop
7. BRANCH FEATURE
Como sugestão o padrão para Feature Branch deverá seguir a nomenclatura:
SPRINT-XXX-001 - Sprint 001 da XXX
SPRINT-XXX-002 - Sprint 002 da XXX
SPRINT-ABC-001 - Sprint 001 da ABC
SPRINT-XPT-001 - Sprint 001 da XPT
...
-> Quando for desejado, o merge será feito conforme sequência de comandos abaixo:
Exemplo de merge entre SPRINT-XXX-001 e develop
$ git checkout develop
$ git submodule foreach git merge feature/SPRINT-xxx-001
$ git merge feature/SPRINT-xxx-001
$ git submodule foreach git push origin develop
$ git push origin develop
Importante: É interessante construir um dicionário com todas siglas desejadas no início
do projeto.
8. A SUCCESSFUL GIT BRANCHING MODEL
http://nvie.com/posts/a-successful-git-branching-model/