Fluxo de Trabalho no Git ======================== Primeiro crie um branch de desenvolvimento no seu repositório local: $ git checkout --track origin/development 1. Trabalhe em sua tarefa, continuamente comitando em intervalos regulares para manter o rastro daquilo que você fez. $ git checkout -b nome_da_tarefa (Criando o Branch da sua Tarefa) 2. Mantenha o branch local de sua tarefa atualizado com o branch remoto de desenvolvimento com qualquer atualizações que a equipe fez. $ git checkout development (Mude para o branch de desenvolvimento) $ git pull origin development (Atualize o branch de desenvolvimento) $ git checkout nome_da_tarefa (Mude para o branch da sua tarefa) $ git rebase development (faça rebase ref: http://git-scm.com/book/pt-br/Ramifica%C3%A7%C3%A3o-Branching-no-Git-Rebasing) ATENÇÃO: NO ÚLTIMO COMANDO (REBASE) PODE EXISTIR CONFLITOS, VOCÊ PRECISA CORRIGÍ-LOS ANTES DE CONTINUAR COM O REBASE. QUALQUER DÚVIDA FALE COM O SÉRGIO. 3. Uma vez terminada a tarefa, junte todos os pequenos commits em um único commit. $ git rebase -i development Quando seu editor abrir combine todos os commits é um único commit. Veja o exemplo abaixo: Original ======== pick ae3a3dc Adding first part of new feature pick 3c82ad8 Adding second part Como deve ficar =============== pick ae3a3dc Adding first part of new feature squash 3c82ad8 Adding second part Atenção: Troque todos os "pick" por "squash" a partir da segunda linha 4. Faça um merge entre o branch de sua tarefa com o branch de desenvolvimento local, depois faça um push para o branch de desenvolvimento remoto. $ git checkout development (Mude para o branch de desenvolvimento) $ git pull origin master (Atualize o branch de desenvolvimento) $ git merge nome_da_tarefa (Junte as alterações do branch de sua tarefa com o de desenvolvimento) $ git push origin development (Suba as alterações para o branch de desenvolvimento) 5. Apague o branch local de sua tarefa quando ele não for mais necessário. $ git branch -d nome_da_tarefa Liberação de Versão =================== Uma vez que todas as tarefas do release estiverem prontas, faça o serguinte: 1. Faça um Merge do branch de desenvolvimento com o Master $ git checkout master $ git merge development 2. Nomeie o release usando a seguinte notação major.minor.patch $ git tag 1.0.0 3. Suba suas mudanças $ git push $ git push --tags Encontrou um BUG? ================= O que acontece se um bug for encontrado no ambiente de produção? Faça o seguinte: 1. Faça as correções diretamente no Master. $ git checkout master (..) Faça as Correções (..) $ git commit -m "Bug Fix: descrição da correção" 2. Nomeie-o como patch de liberação (major.minor.patch) $ git tag 1.0. <- coloque aqui a versão do patch $ git push --tags 3. Suba as mudanças para o Master $ git push origin master 4. Faça um Merge do Master com o de development $ git checkout Master $ git merge development -> Caso ocorram conflitos corríja-os 5. Suba as mudanças para o Development $ git checkout development $ git push origin development