Article image

BS

Bruno Silva29/08/2024 19:48
Compartilhe

Git Merge Types

  • #Git

Quando precisamos juntar duas branches temos a nossa disposição alguns comandos interessantes no git.

Esses comandos podem confundir algumas pessoas em relação ao que eles de fato produzem ao executá-los.

Neste artigo veremos as diferenças entre os diferentes comandos merge e também o comando rebase.

Para começar vamos utilizar de exemplo duas branches

1 - Main

2 - Feature/changes 

Todas as branches criadas em um repositório são criadas a partir de um commit específico da branch de referência, a partir da qual foi criada.

No exemplo à baixo a branch 'Feature/changes' foi criada a partir da branch 'Main'

image

MERGE

O Merge normal vai pegar cada commit da branch 'Feature/changes' e adicionar ao histórico da branch main, como na figura abaixo:

main~$ git merge feature/changes

image

Perceba que foi gerado um commit do merge(commit 5) que indica quando o merge foi feito.

FAST FORWARD MERGE

O Fast forward merge é parecido com o Merge normal com a diferença que não cria um commit de merge

Este tipo de Merge acontece quando não houver mudanças na branch de referência, neste caso a Main, desde que criamos a nova branch.

O Fast Forward é feito automaticamente pelo git se ele identificar que não houveram novos commits na branch 'base'.

main~$  git merge feature/changes

image

MERGE SQUASH

O merge Squash é um comando muito interessante pois ele pega todos os commits da branch que queremos "mergear" e transforma em um único commit, esse commit é então

adicionado ao histórico de commits da branch de referência. 

main~$  git merge --squash feature/changes

image

GIT REBASE E MERGE

O Rebase e Merge por sua vez pegará o primeiro commit da branch que foi criada em cima da branch de referência e move este commit para o ultimo

commit feito na branch de referência e depois aplica todos os outros commits em cima dessas mudanças.

feature/changes~$  git rebase main

Perceba que é parecido com o Fast Forward porém funciona quando a branch de referência sofreu alterações pelo caminho.

É sempre interessante ter a branch de referência, no nosso caso aqui a main, sempre atualizada.

image

Sempre procure manter as branches atualizadas com as mudanças remotas antes de executar alguma ação localmente e lembre-se sempre de ler a documentação do git para referências:

https://git-scm.com/doc.

Até a próxima.

Compartilhe
Comentários (1)
Ronaldo Schmidt
Ronaldo Schmidt - 29/08/2024 20:40

Artigo muito bem feito e a adição das imagens torna o entendimento muito mais claro.

Dominar o git e seus comandos é fundamental para qualquer desenvolvedor.

Obrigado por compartilhar.