-- start branch2 from branch1
git checkout branch1
git checkout -b branch2
-- make changes on branch2
git checkout branch2
git add file-changed
git commit -m "my commit message"
-- rebase branch2 whenever branch1 gets changed
git checkout branch2
git rebase branch1
-- finally rebase branch2 after branch1 was merged into master
git checkout master
git pull origin master
git checkout branch2
git rebase --onto master branch1 branch2
Trabalhando com as diversas técnicas modernas de desenvolvimento de sistemas como CI/CD, CleanCode, PMF entre outras os Web Devs frequentemente enfrentam o dilema de fragmentar ou não seus Pull Requests.
Para quem trabalha com o GIT segue aqui uma receita que achei interessante registrar. A receita é auto-explicativa não tem muito segredo; a sacada aqui é a sequência combinada dos comandos que já utilizamos em atividades diárias com o GIT.
Quer saber se funciona mesmo?
Funciona sim, finalmente tive oportunidade de testar num projeto recente e foi sucesso total, exceto pelo fato de eu ter produzido múltiplos commits o que não é permitido no meu ambiente de CI/CD.
Para resolver estes commits múltiplos bastou fazer um squash para unificá-los na branch final.
git checkout branch2
git reset --soft HEAD~2
git commit -m "new commit message"
git pull --rebase origin master --autostash
git push -f
Para evitar essa complicação final deveríamos fazer apenas commits complementares, assim logo após criar a branch2 a partir da branch1 somente performar commit —amend:
-- make your changes on branch2 then commit amend
git checkout -b branch2
git add file-changed
git commit --amend
So, who’s gonna take the risk?