Sobes.tech
Junior

Qual é a diferença entre os comandos git rebase e git merge?

sobes.tech IA

Resposta da IA

A diferença entre git rebase e git merge reside na forma como as alterações de um ramo são integradas em outro.

git merge combina as alterações criando um novo commit de fusão. A história dos commits permanece linear apenas dentro de cada ramo, mas o ponto de fusão cria uma " bifurcação".

// Exemplo de uso:
git checkout main
git merge feature/nova-funcionalidade

git rebase transfere os commits do ramo alvo sobre os commits do ramo base. Isso cria uma história linear de commits, como se o trabalho tivesse sido feito diretamente no ramo base. Os commits originais do ramo onde o rebase é realizado são reescritos com novos commits pais.

// Exemplo de uso:
git checkout feature/nova-funcionalidade
git rebase main

Comparação:

Característica git merge git rebase
Tipo de história Não linear (com commits de fusão) Linear (reescreve commits)
História de commits É totalmente preservada É alterada (os commits são reescritos)
Commit de fusão É criado Não é criado
Clareza da história Pode ser mais difícil de seguir com fusões frequentes Mais limpa e linear, mas perde o contexto das fusões originais
Uso Recomendado para ramos públicos Preferido para ramos locais ainda não publicados

A escolha entre eles depende da tarefa e das preferências da equipa. Para ramos públicos, geralmente prefere-se git merge para manter a história. Em ramos locais que ainda não foram publicados, git rebase ajuda a manter uma história linear limpa.