- Centralized Workflow
- Feature Branch Workflow
- Gitflow Workflow
- Forking Workflow
Fonte: https://www.atlassian.com/git/workflows
Contato: dpasqualin@gmail.com
Diego Giovane Pasqualin
Feature branch worflow + branches especiais + tags;
Branches especiais: develop, release, hotfix;
Existe um repositório "oficial", mas cada desenvolvedor tem seu próprio repositório remoto, um fork do original;
Cada nova funcionalidade é desenvolvida em seu próprio branch;
O merge para o master é feito através de merge requests;
Possui somente o branch "master", todos os desenvolvedores publicam diretamente nele;
A revisão de código é feita a posteriori;
Cada desenvolvedor pode utilizar o workflow que preferir;
Os desenvolvedores não precisam ter acesso de escrita no repositório oficial;
Muito comum no desenvolvimento de grandes aplicações open source;
Considerando somente os branches develop e branches feature o fluxo é o mesmo do Feature Branch Workflow, com o develop do Gitflow Workflow sendo análogo ao master do Feature Branch Workflow;
$ git checkout -b issue/1234
$ git status
$ git add <some-file>
$ git commit
$ git push -u origin issue/1234
git clone ssh://user@host/path/to/repo.git
Os interessados em colaborar com um projeto fazem um fork (cópia) dele, modificam criando funcionalidades e/ou corrigindo bugs, posteriormente submetem um merge request do seu repositório para o repositório oficial.
Os branches do tipo release representam releases futuras e são nomeados na forma: release/X.Y.Z;
Não recebem novas funcionalidades, apenas correções de bugs;
Quando pronto, um merge do branch release é feito com o master e com o develop (o release pode ter recebido correções que devem ser visíveis as novas features no develop);
Após merge, o release/X.Y.Z deve ser deletado;
$ git status # Ver mudanças locais
$ git add <file> # Adicionar arquivo
$ git commit <file> # Submeter arquivo
# Enviar para repositório remoto
$ git push origin master
Os projetos do C3SL são a união de um dos fluxos de trabalho anteriores (fortemente recomendado Feature ou Gitflow workflow). O Forking Worflow só é utilizado para contribuir ou permitir contribuições da comunidade externa.
Contém correções de bugs que não podem aguardar o lançamento de uma próxima release.
O merge de um hotfix é o único feito diretamente com o master, além do branch develop (e release, se existir);
Todo merge para o master recebe uma tag com o nome do branch release de origem, ou um acréscimo mínimo de versão quando originado de um branch hotfix
$ git push origin master
error: failed to push some refs to '/path/to/repo.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Se o branch master for protegido somente os masters do repositório podem fazer o merge, caso contrário a própria Maria pode fazê-lo.
$ git pull
# Git pausa a operação quando encontra conflito.
# Resolva conflitos de cada commit de forma independente
$ git add <file> # Para resolver o conflito
$ git rebase --continue # Seguir para próximo commit
$ git rebase --abort # Cancela toda a operação desde git pull
$ git push origin master