Fluxo
Fluxo de comandos
FLUXO DE CRIAÇÃO DE BRANCH FEATURE E MERGE NA DEVELOPER
A) Atualizar a developer
Antes de começar a trabalhar individualmente em uma branch separada, é preciso atualizar a branch developer para a partir dela criarmos uma branch feature. Seguem os passos:
1- Primeiramente check se você de fato está na branch developer, para isso utilize o comando
git branch
.2- Estando na branch developer, para atualizar a mesma com a branch do servidor (origin), utilize o comando
git pull --rebase
.Explicação do comando 'git pull --rebase' - O comando anterior atualizou a branch impedindo que fosse criado um commit de merge. O motivo é que ao realizar git pull, 2 comandos são executados por debaixo dos panos. O primeiro é
git fetch
que faz uma busca no servidor por todos os commits e merges existentes. O segundo faz de fato umgit merge
da developer do servidor na developer da sua máquina (local). Para que não ocorra o risco de fazer push do commit gerado por esse merge, é utilizada a flag--rebase
. Com isso sua developer local fica atualizada e livre de efeitos colaterais.
B) Criando uma branch feature (nova funcionalidade)
1- Estando já com a developer atualizada, utilize o comando
git checkout -b feature/<nome-da-funcionalidade>
para criar uma nova branch a partir da developer.2- Com a sua branch criada agora é possível trabalhar somente nela e sempre que tiver completado uma etapa do desenvolvimento, subir para a branch remota (origin).
C) Commitando na branch feature
1- Primeiramente verifique todas as alterações realizadas até o momento por meio do comando
git status
.2- Após verificar, para adicionar os arquivos que deseja que sejam commitados, utilize o comando
git add <nome-arquivo1> <nome-arquivo2> <nome-arquivoN>
para adicionar separadamente cada arquivo, ougit add .
(ponto) para adicionar todas as alterações. Caso queira conferir o que foi adicionado para ser commitado (staged changes), utilize o comandogit status
novamente.3- Após se certificar de que todas as alterações desejadas já estão prontas para serem commitadas, utilize o comando
git commit -am "Mensagem de commit aqui"
. Esse comando tem a flag -a (adiciona todos os arquivos caso tenha esquecido de fazer na etapa anterior) e -m (mensagem do commit seguido de aspas).4- Para finalizar, e já definir a sua branch como a origin padrão dos próximos commits, digite o comando
git push
. Caso tudo esteja ok com sua branch, irá surgir uma mensagem dizendo que é possível deixar definido sua branch origin como a sua local por meio do comandogit push --set-upstream origin <nome-da-sua-branch-feature>
. Copie esse comando, cole no console e execute. Pronto, você acaba de realizar subir seu primeiro commit dessa branch freature.Explicação do comando 'git push' somente Fazendo o passo anterior, não será mais preciso, para todo novo commit, ter que digitar
git push origin <nome-da-sua-branch-feature>
e simgit push
que o git já saberá que é um puch para a sua branch.
D) Atualizando a branch feature com a devel (rebase da devel na sua branch):
Ponderações Iniciais | LEIA COM ATENÇÃO É importante de tempos em tempos, manter a sua branch feature atualizada em relação a developer, para que quando for realizado o merge com a developer, o número de conflitos sejam menores. Antes de qualquer coisa, certifique-se de que você não tenha NENHUM COMMIT para fazer ou alterações que não foram commitadas ainda. Caso existam alterações, e você não pode subir elas no momento, utilize o comando
git stash
para salvar os arquivos modificados em uma branch temporária, e depois de realizar o rebase completamente (que será descrito nos próximos passos), você pode trazer de volta esses arquivos com o comandogit stash pop
.
1- Para começarmos o rebase da developer na nossa branch, primeiramente será preciso atualizar a developer local com a developer remota (origin), para isso vá para a branch developer utilizando o comando
git checkout developer
e depoisgit pull --rebase
.2- Após ter atualizado a developer, retorne para a sua branch utilizando o comando
git checkout <nome-da-sua-branch-feature>
3- De volta a sua branch, e já com a developer atualizada, utilize o comando
git rebase developer
para atualizar (rebasear) sua branch em relação a developer. Repare que nesse processo poderão surgir conflitos. Caso isso ocorra, você precisará resolvê-los.4- Para resolver os conflitos, você pode fazer diretamente com o VS Code, ou com uma ferramenta especializada como o TortoiseGit . Caso haja necessidade de resolver um conflito específico com algum colega de equipe, não exite em contatá-lo para esclarecerem as dúvidas e mergearem os dados de forma correta na sua branch.
5- A cada resolução de conflito, será preciso executar o comando
git rebase --continue
.6- Caso exista alguma dúvida quanto a execução do rebase, ou existam conflitos que necessitem de um terceiro que esteja ausente, você pode a qualquer momento abortar o processo com o comando
git rebase --abort
7- Caso tenha resolvido todos os conflitos, e mesmo usando o rebase --continue o git não permita você prosseguir, pode ser o caso de ele já ter resolvido os conflitos, e ele está ignorando a sua resolução. Nesse caso, você deverá utilizar o
git rebase --skip
8- Após ter finalizado todo o processo e todos os conflitos já foram resolvidos, é chegado o momento de subir essas alterações para a sua branch origin (servidor). Porém caso você tente executar
git push
, vai dar erro, pois é muito provável que a sua branch local esteja divergindo da branch remota (você pode verificar isso ao executar o comandogit status
, se o output desse comando estiver dizendo para você fazer umgit pull
, significa que sua branch local está, de fato, divergindo da remota). Isso se deve ao fato de a sua branch no servidor não ter as diversas alterações que entraram no merge feito pelo rebase da developer na sua branch. Para que a branch do servidor aceite o push, será necessário utilizar a flag--force
.9- Para subir a branch para o servidor, utilize o comando
git push --force-with-lease
. Usamos o -with-lease apenas por questões de segurança caso um outro colega tenha feito commit também (issue do stackoverflow.
E) Merge da branch feature com a developer
1- Estando com a sua branch feature atualizada com a developer. Já é possível realizar o merge caso seja o momento oportuno.
2- Para isso volte para a branch developer com o comando:
git checkout developer
(ou outro nome que sua equipe tenha adotado, como: dev ou developer)2- Execute o comando:
git merge --no-ff <feature/nome_funcionalidade>
. A flag --no-ff é utilizada para não deixar o git fazer um fast-foward, ou seja, ele irá manter o histórico da branch que está voltando para developer.3- Após executar o comando acima no terminal, caso apareça o editor Vim com a mensagem de commit gerada automaticamente, utilize o comando :wq e aperte ENTER para sair do editor e finalizar o merge. Não é necessário alterar a mensagem padrão de commit do merge.
4- Rode o projeto e teste, se tudo estiver certo, execute o comando git push, para subir o seu merge para a branch developer remota.
FLUXO DE CRIAÇÃO DE BRANCH HOTFIX E MERGE NA MASTER
OBS: Caso a master seja intocável, os passos descritos nesse fluxo serão feitos baseados na developer
A) Atualizar a master Antes de começar a trabalhar individualmente em uma branch separada, é preciso atualizar a branch master para a partir dela criarmos uma branch hotfix. Seguem os passos:
1- Primeiramente check se você de fato está na branch master, para isso utilize o comando
git branch
.2- Estando na branch master, para atualizar a mesma com a branch do servidor (origin), utilize o comando
git pull --rebase
.
B) Criando uma branch feature (nova funcionalidade)
1- Estando já com a master atualizada, utilize o comando
git checkout -b hotfix/<nome-da-funcionalidade>
para criar uma nova branch a partir da developer.2- Com a sua branch criada agora é possível trabalhar somente nela e sempre que tiver completado uma etapa do desenvolvimento, subir para a branch remota (origin).
Last updated