Sobes.tech
Junior — Middle

Como distinguir os comandos git rebase e git merge e quais são as suas principais diferenças?

sobes.tech IA

Resposta da IA

git merge e git rebase são dois comandos diferentes para integrar alterações de uma branch para outra, mas eles funcionam de forma diferente.

  • git merge cria um novo commit de fusão que combina a história de ambas as branches, mantendo o seu desenvolvimento paralelo. A história permanece ramificada, mostrando claramente quando e como ocorreu a fusão.

  • git rebase "reescreve" a história, movendo os seus commits locais para cima de outra branch, criando uma história linear sem commits de fusão. Isto simplifica a história, mas altera os hashes dos commits.

Principais diferenças:

  • Merge mantém a história ramificada, rebase faz a história linear.
  • Após um rebase, deve-se ter cuidado com branches públicos, pois a história é reescrita.
  • Merge é mais simples e mais seguro para trabalho em equipa.

Exemplo:

# merge
git checkout feature
git merge main

# rebase
git checkout feature
git rebase main

No primeiro caso, aparecerá um commit de fusão, no segundo, os seus commits serão "movidos" para o topo do main.