Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Git Merge e Git Rebase
The first thing to know is that
git rebase and git merge
solves the same problem!
Integrate changes from one
branch into another branch
They just do it in very
different ways.
git merge
1 2 5 6
3 4
master
feature
1 2 5 6
3 4
master
git checkout master
feature
head
1 2 5 6
3 4
master
git checkout master
git merge feature
feature
7
head
Merge
Merge é um novo commit.
A principal diferença é que
ele tem dois pais. Todos os
outros commits tem apenas
um pai.1 2...
merge
fast forward
1 2
3 4
master
feature
1 2
3 4
master
feature
git checkout master
head
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...
git merge é legal por ser uma operação não destrutiva. As
branchs existentes não são alteradas de forma alguma. Isso
evita...
git rebase
1 2 5 6
3 4
master
feature
1 2 5 6
3 4
master
git checkout feature
feature head
1 2 5 6
7
master
git checkout feature
git rebase master
feature head
(3)
1 2 5 6
7
master
git checkout feature
git rebase master
feature head
(3) (4)
8
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 t...
O principal benefício do git rebase é que você obtém um histórico
do projeto muito mais limpo.
Primeiro, ele elimina os co...
legal, mas
e aí?!
Cenário
com merge
1 2 5 6
3 4
master
feature
1 2 5 6
3 4 7 8
bug_fixfeature
master
1 2 5 6
3 4
master
7 8
bug_fixfeature
git checkout master
head
1 2 5 6
3 4
master
7 8
9
bug_fixfeature
git checkout master
git merge bug_fix
head
1 2 5 6
3 4
master
7 8
9
bug_fix
feature
x x
1 2 5 6
3 4
master
7 8
9
bug_fix
feature
x x
git checkout master
head
1 2 5 6
3 4
master
7 8
9
bug_fix
feature
x x
git checkout master
git merge feature
y
head
Mesmo
cenário +
rebase
1 2 5 6
3 4
master
feature
1 2 5 6
3 4 7 8
bug_fixfeature
master
1 2 5 6
3 4
master
7 8
bug_fixfeature
git checkout master
head
1 2 5 6
3 4
master
7 8
9
bug_fixfeature
git checkout master
git merge bug_fix
head
1 2 5 6
3 4
master
7 8
9
bug_fix
feature
x x
1 2 5 6
3 4
master
7 8
9
bug_fix
feature
x x
git checkout feature
head
1 2 5 6
3 47 8
9
bug_fix feature
x x
git checkout feature
git rebase master
master
head
1 2 5 6
3 47 8
9
bug_fix feature
x x
git checkout master
master
head
1 2 5 6
3 47 8
9
bug_fix feature
x x
git checkout master
git merge feature
master
head
y
Não manjo nada,
colei daqui:
● Mergin vs Rebasing by Atlasin
● Five Agency Git Merge and Rebase simple explanation
Thanks! ;)
Upcoming SlideShare
Loading in …5
×

Git Merge e Rebase - The goal and differences

259 views

Published on

I did this tech talk at Moip startup to explain the differences between merge and rebase git commands and why rebase is nice.

Published in: Technology
  • Be the first to comment

Git Merge e Rebase - The goal and differences

  1. 1. Git Merge e Git Rebase
  2. 2. The first thing to know is that git rebase and git merge solves the same problem!
  3. 3. Integrate changes from one branch into another branch
  4. 4. They just do it in very different ways.
  5. 5. git merge
  6. 6. 1 2 5 6 3 4 master feature
  7. 7. 1 2 5 6 3 4 master git checkout master feature head
  8. 8. 1 2 5 6 3 4 master git checkout master git merge feature feature 7 head
  9. 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
  10. 10. merge fast forward
  11. 11. 1 2 3 4 master feature
  12. 12. 1 2 3 4 master feature git checkout master head
  13. 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. 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.
  15. 15. git rebase
  16. 16. 1 2 5 6 3 4 master feature
  17. 17. 1 2 5 6 3 4 master git checkout feature feature head
  18. 18. 1 2 5 6 7 master git checkout feature git rebase master feature head (3)
  19. 19. 1 2 5 6 7 master git checkout feature git rebase master feature head (3) (4) 8
  20. 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. 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.
  22. 22. legal, mas e aí?!
  23. 23. Cenário com merge
  24. 24. 1 2 5 6 3 4 master feature
  25. 25. 1 2 5 6 3 4 7 8 bug_fixfeature master
  26. 26. 1 2 5 6 3 4 master 7 8 bug_fixfeature git checkout master head
  27. 27. 1 2 5 6 3 4 master 7 8 9 bug_fixfeature git checkout master git merge bug_fix head
  28. 28. 1 2 5 6 3 4 master 7 8 9 bug_fix feature x x
  29. 29. 1 2 5 6 3 4 master 7 8 9 bug_fix feature x x git checkout master head
  30. 30. 1 2 5 6 3 4 master 7 8 9 bug_fix feature x x git checkout master git merge feature y head
  31. 31. Mesmo cenário + rebase
  32. 32. 1 2 5 6 3 4 master feature
  33. 33. 1 2 5 6 3 4 7 8 bug_fixfeature master
  34. 34. 1 2 5 6 3 4 master 7 8 bug_fixfeature git checkout master head
  35. 35. 1 2 5 6 3 4 master 7 8 9 bug_fixfeature git checkout master git merge bug_fix head
  36. 36. 1 2 5 6 3 4 master 7 8 9 bug_fix feature x x
  37. 37. 1 2 5 6 3 4 master 7 8 9 bug_fix feature x x git checkout feature head
  38. 38. 1 2 5 6 3 47 8 9 bug_fix feature x x git checkout feature git rebase master master head
  39. 39. 1 2 5 6 3 47 8 9 bug_fix feature x x git checkout master master head
  40. 40. 1 2 5 6 3 47 8 9 bug_fix feature x x git checkout master git merge feature master head y
  41. 41. Não manjo nada, colei daqui: ● Mergin vs Rebasing by Atlasin ● Five Agency Git Merge and Rebase simple explanation
  42. 42. Thanks! ;)

×