1
resposta

Merge com branch master

Olá Professor, boa tarde.

envia = !git checkout master && git pull && git checkout desenvolvimento && git rebase master && git checkout master && git merge desenvolvimento && git push

Na hora de enviar a minha branch master para o meu repositório, ao invés de eu realizar um merge com a branch desenvolvimento, eu não poderia realizar um rebase também não? Assim como você fez para atualizar sua branch desenvolvimento no comando acima. Abraços.

1 resposta

Olá Gabriel,

a dúvida entre a diferença do git rebase e do git merge é algo bem específico e interessante que sempre surge quando começamos a entender o git de verdade.

Respondendo à sua pergunta: sim, podemos utilizar os dois. Isso acontece pois o git merge e o git rebase resolvem exatamente o mesmo problema: integrar as mudanças de uma branch em outra. A diferença é no modo em que os dois funcionam.

O git merge funciona criando um commit de mesclagem (merge) entre as duas branches.

O git rebase coloca os novos commits da master no início da sua branch de desenvolvimento e sobrescreve tudo que você fez nela, recolocando os seus commits supondo que você iniciou a sua branch quando os novos commits da master já tinham sido incluídos. Isso deve ser feito apenas quando a sua branch de desenvolvimento não é pública pois o rebase reescreve o histórico de todas as pessoas que tenham acesso a essa branch (inclusive, o git só vai deixar você subir uma branch onde foi utilizado o rebase se você utilizar o modificador --force).

É claro que isso depende do fluxo do ambiente de trabalho. Se todos estiverem cientes de que rebases serão feitos em branches públicas, isso pode funcionar, mas o importante é saber exatamente o que está acontecendo por trás, pois o git é bastante complexo por trás dos panos.