[GIT] Merging - Aula 5
Merging
Ao realizar o merge o Git irá gerar um novo Commit com todas as alterações da Branch que está sendo mesclada, vejamos:
B---C topic
/
D---E---A main
Foi criado uma Branch chamada "topic", enquanto a Branch "main" seguiu normalmente, após as implementações da "topic" terem sido realizadas e testadas, é a hora de adicionar essas alterações à "main".
B---C topic
/ \
D---E---A---F main
Feito o Merge de "topic" na "main", foi criado o Commit "F", que contém todas as alterações dos Commits da Branch "topic" (B e C), "F" é chamado de Merge Commit.
Como fazer um Merge Commit
B---C topic
/
D---E---A main
Primeiramente precisamos encontrar o Merge Base ou Best Common Ancestor, no exemplo acima, o Merge Base seria o Commit "E".
Feito isso, garanta que você está na Branch que quer manter:
git switch main
No caso acima, queremos mesclar "topic" em "main"
Uma boa prática seria atualizar a sua Branch com o repositório remoto:
git pull origin main
Agora basta fazer o merge:
git merge topic
o resultado:
B---C topic
/ \
D---E---A---F main
Obs: Perceba que "F" o nosso Merge Commit, possui 2 parentes "A" e "C".
Fast Forward Merge
Uma forma mais rápida de fazer Merge, o Fast Forward Merge, precisa atender alguns requisitos, e sua vantagem é não criar um Merge Commit. Exemplo:
C---D topic
/
A---B main
Perceba que o Tip de main "B", é o Merge Base da Branch topic, o que nos permite fazer um Fast Forward Merge.
Basta realizar os passos de fazer um Merge normal (conforme explicado acima):
git merge topic
e o resultado será:
topic
A---B---C---D main
Repare que a Branch topic continua existindo, mas todo o seu conteúdo foi adicionado à main, sem Merge Commit.
Forçando a criação de um Merge Commit
Ao chegar na situação acima, o comando Git merge irá automaticamente realizar o Fast Forward Merge, entretanto, se por alguma razão você queira criar o Merge Commit, basta fazer:
git merge --no-ff topic
--no-ff = Sem Fast Forward.