Sobes.tech
Junior — Middle

Qual é a diferença entre os comandos 'git merge' e 'git rebase' ao juntar ramos no sistema de controlo de versões Git?

sobes.tech IA

Resposta da IA

Os comandos git merge e git rebase são ambos usados para combinar alterações de um branch em outro, mas fazem isso de maneiras diferentes:

  • git merge cria um novo commit de fusão que une a história de ambos os branches, mantendo sua história paralela.

    • Exemplo:
      git checkout master
      git merge feature-branch
      
    • A história dos branches permanece ramificada, mostrando quando e quais branches foram fundidos.
  • git rebase transfere (reescreve) os commits de um branch sobre outro, criando uma história linear sem commits de fusão.

    • Exemplo:
      git checkout feature-branch
      git rebase master
      
    • É como se você começasse um branch do último commit do master, simplificando a história, mas alterando os hashes dos commits.

Quando usar:

  • merge é útil para manter toda a história e quando a transparência do ramificado é importante.
  • rebase é útil para simplificar a história antes de fundir na branch principal, evitando commits de fusão desnecessários.

É importante lembrar que rebase altera a história, portanto, não é recomendado fazer rebase em branches públicas que já estão acessíveis a outros.