9. Merge
Merge é um novo commit.
A principal diferença é que
ele tem dois pais. Todos os
outros commits tem apenas
um pai.1 2 5 6
3 4
git checkout master
git merge feature
feature
7
master head
13. Merge Fast Forward
O único momento que o
merge não cria um novo
commit é no merge fast
forward.
1 2
3 4
master
feature
git checkout master
git merge master
head
14. git merge é legal por ser uma operação não destrutiva. As
branchs existentes não são alteradas de forma alguma. Isso
evita armadilhas potenciais causadas pelo git rebase.
Por outro lado, isso também significa que a branch terá um
commit de merge toda vez que for necessário incorporar
alterações de outra branch (master por exemplo).
Se master é muito ativo, isso pode poluir um pouco o histórico
de commits.
18. 1 2 5 6
7
master
git checkout feature
git rebase master
feature head
(3)
19. 1 2 5 6
7
master
git checkout feature
git rebase master
feature head
(3) (4)
8
20. 1 2 5 6
7
master
git checkout feature
git rebase master
feature head
(3) (4)
8
Rebase
Recria os commits de uma
branch no topo da outra.
Repare que são criados
novos commits.
21. O principal benefício do git rebase é que você obtém um histórico
do projeto muito mais limpo.
Primeiro, ele elimina os commits de merge desnecessários exigidos
pelo git merge. Segundo, git rebase resulta em um histórico
perfeitamente linear. Isso facilita a navegação no seu projeto com
comandos como git log, git bissect e gitk.
Mas, reescrever o histórico de commits pode ser potencialmente
catastrófico para seu fluxo de trabalho de colaboração.
Basicamente, como regra de ouro, não use git rebase em branchs
compartilhadas.