SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Downloaden Sie, um offline zu lesen
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 5 6
3 4
git checkout master
git merge feature
feature
7
master head
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 checkout master
git merge master
head
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.
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 topo da outra.
Repare que são criados
novos commits.
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.
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! ;)

Weitere ähnliche Inhalte

Ähnlich wie Git Merge e Rebase: Uma Comparação

Git e Gitlab para Iniciantes
Git e Gitlab para IniciantesGit e Gitlab para Iniciantes
Git e Gitlab para IniciantesIgorDiniz22
 
git fail --force (faça as pazes com seus pull requests)
git fail --force (faça as pazes com seus pull requests)git fail --force (faça as pazes com seus pull requests)
git fail --force (faça as pazes com seus pull requests)Carlos Duarte do Nascimento
 
Controle de versão com Git e BitBucket
Controle de versão com Git e BitBucketControle de versão com Git e BitBucket
Controle de versão com Git e BitBucketMarcio Barbosa
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao gitDiogo Gomes
 
Desmistificando a ferramenta git
Desmistificando a ferramenta gitDesmistificando a ferramenta git
Desmistificando a ferramenta gitDiogo Souza Machado
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com GitVagner Santana
 
Git - O Rebase Pode Te Assustar
Git - O Rebase Pode Te AssustarGit - O Rebase Pode Te Assustar
Git - O Rebase Pode Te AssustarAlberto Leal
 
Workshop de Introdução ao Git GitHub
Workshop de Introdução ao Git GitHubWorkshop de Introdução ao Git GitHub
Workshop de Introdução ao Git GitHubGilson Junior
 
Rogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJRogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJNathália Cruz de Oliveira
 
GIT - Gerenciamento de Projeto e Versionamento Semântico
GIT - Gerenciamento de Projeto e Versionamento SemânticoGIT - Gerenciamento de Projeto e Versionamento Semântico
GIT - Gerenciamento de Projeto e Versionamento SemânticoDjanilson Alves
 
Use o git e perca o medo de errar
Use o git e perca o medo de errarUse o git e perca o medo de errar
Use o git e perca o medo de errarBruno Calheira
 
Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Erik Cruz
 
Git - Fluxo do Versionamento adotado
Git - Fluxo do Versionamento adotadoGit - Fluxo do Versionamento adotado
Git - Fluxo do Versionamento adotadoWilliam Lima
 
Rogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJRogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJNathália Cruz de Oliveira
 

Ähnlich wie Git Merge e Rebase: Uma Comparação (20)

Introdução ao Git
Introdução ao Git   Introdução ao Git
Introdução ao Git
 
Git e Gitlab para Iniciantes
Git e Gitlab para IniciantesGit e Gitlab para Iniciantes
Git e Gitlab para Iniciantes
 
git fail --force (faça as pazes com seus pull requests)
git fail --force (faça as pazes com seus pull requests)git fail --force (faça as pazes com seus pull requests)
git fail --force (faça as pazes com seus pull requests)
 
Git
GitGit
Git
 
Controle de versão com Git e BitBucket
Controle de versão com Git e BitBucketControle de versão com Git e BitBucket
Controle de versão com Git e BitBucket
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao git
 
Git
GitGit
Git
 
Git e github
Git e githubGit e github
Git e github
 
Desmistificando a ferramenta git
Desmistificando a ferramenta gitDesmistificando a ferramenta git
Desmistificando a ferramenta git
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com Git
 
Git - O Rebase Pode Te Assustar
Git - O Rebase Pode Te AssustarGit - O Rebase Pode Te Assustar
Git - O Rebase Pode Te Assustar
 
Workshop de Introdução ao Git GitHub
Workshop de Introdução ao Git GitHubWorkshop de Introdução ao Git GitHub
Workshop de Introdução ao Git GitHub
 
Rogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJRogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJ
 
GIT - Gerenciamento de Projeto e Versionamento Semântico
GIT - Gerenciamento de Projeto e Versionamento SemânticoGIT - Gerenciamento de Projeto e Versionamento Semântico
GIT - Gerenciamento de Projeto e Versionamento Semântico
 
Use o git e perca o medo de errar
Use o git e perca o medo de errarUse o git e perca o medo de errar
Use o git e perca o medo de errar
 
Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021
 
Git - Fluxo do Versionamento adotado
Git - Fluxo do Versionamento adotadoGit - Fluxo do Versionamento adotado
Git - Fluxo do Versionamento adotado
 
Git ...ftw!
Git ...ftw!  Git ...ftw!
Git ...ftw!
 
Git flow no projeto
Git flow no projetoGit flow no projeto
Git flow no projeto
 
Rogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJRogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJ
 

Mehr von Suelen Carvalho

Porque Métodos Ágeis não é pra você!
Porque Métodos Ágeis não é pra você!Porque Métodos Ágeis não é pra você!
Porque Métodos Ágeis não é pra você!Suelen Carvalho
 
Scrum: Relembrando os por quês?
Scrum: Relembrando os por quês?Scrum: Relembrando os por quês?
Scrum: Relembrando os por quês?Suelen Carvalho
 
Techtrends xp desafios da agilidade com trabalho remoto
Techtrends xp   desafios da agilidade com trabalho remotoTechtrends xp   desafios da agilidade com trabalho remoto
Techtrends xp desafios da agilidade com trabalho remotoSuelen Carvalho
 
Introdução a Android Instant Apps
Introdução a Android Instant AppsIntrodução a Android Instant Apps
Introdução a Android Instant AppsSuelen Carvalho
 
Construindo Times de Alta Performance - Produtos & Engenharia
Construindo Times de Alta Performance - Produtos & EngenhariaConstruindo Times de Alta Performance - Produtos & Engenharia
Construindo Times de Alta Performance - Produtos & EngenhariaSuelen Carvalho
 
Dynamic Programming and Reinforcement Learning applied to Tetris Game
Dynamic Programming and Reinforcement Learning applied to Tetris GameDynamic Programming and Reinforcement Learning applied to Tetris Game
Dynamic Programming and Reinforcement Learning applied to Tetris GameSuelen Carvalho
 
Desenvolvimento de Novos Líderes - Paidéia Educação
Desenvolvimento de Novos Líderes - Paidéia EducaçãoDesenvolvimento de Novos Líderes - Paidéia Educação
Desenvolvimento de Novos Líderes - Paidéia EducaçãoSuelen Carvalho
 
O sucesso do seu app está nos detalhes!
O sucesso do seu app está nos detalhes!O sucesso do seu app está nos detalhes!
O sucesso do seu app está nos detalhes!Suelen Carvalho
 
Supporting Coding and Testing
Supporting Coding and TestingSupporting Coding and Testing
Supporting Coding and TestingSuelen Carvalho
 
Semana da Computação USP São Carlos 2014 - Carreira Mobile
Semana da Computação USP São Carlos 2014 - Carreira MobileSemana da Computação USP São Carlos 2014 - Carreira Mobile
Semana da Computação USP São Carlos 2014 - Carreira MobileSuelen Carvalho
 
TDC 2014 - Tudo sobre GCM Push Notifications
TDC 2014 - Tudo sobre GCM Push NotificationsTDC 2014 - Tudo sobre GCM Push Notifications
TDC 2014 - Tudo sobre GCM Push NotificationsSuelen Carvalho
 
Mobile Conf 2014 - Sua carreira e o que o desenvolvimento mobile tem a ver co...
Mobile Conf 2014 - Sua carreira e o que o desenvolvimento mobile tem a ver co...Mobile Conf 2014 - Sua carreira e o que o desenvolvimento mobile tem a ver co...
Mobile Conf 2014 - Sua carreira e o que o desenvolvimento mobile tem a ver co...Suelen Carvalho
 
Conexao Java - Sua primeira app Android
Conexao Java - Sua primeira app AndroidConexao Java - Sua primeira app Android
Conexao Java - Sua primeira app AndroidSuelen Carvalho
 
A história do surgimento da plataforma móvel Android.
A história do surgimento da plataforma móvel Android.A história do surgimento da plataforma móvel Android.
A história do surgimento da plataforma móvel Android.Suelen Carvalho
 
O fantástico mundo de Android
O fantástico mundo de AndroidO fantástico mundo de Android
O fantástico mundo de AndroidSuelen Carvalho
 
Usando o Poder da API Fragments
Usando o Poder da API FragmentsUsando o Poder da API Fragments
Usando o Poder da API FragmentsSuelen Carvalho
 

Mehr von Suelen Carvalho (20)

Porque Métodos Ágeis não é pra você!
Porque Métodos Ágeis não é pra você!Porque Métodos Ágeis não é pra você!
Porque Métodos Ágeis não é pra você!
 
Scrum: Relembrando os por quês?
Scrum: Relembrando os por quês?Scrum: Relembrando os por quês?
Scrum: Relembrando os por quês?
 
Techtrends xp desafios da agilidade com trabalho remoto
Techtrends xp   desafios da agilidade com trabalho remotoTechtrends xp   desafios da agilidade com trabalho remoto
Techtrends xp desafios da agilidade com trabalho remoto
 
Introdução a Kotlin
Introdução a KotlinIntrodução a Kotlin
Introdução a Kotlin
 
Introdução a Android Instant Apps
Introdução a Android Instant AppsIntrodução a Android Instant Apps
Introdução a Android Instant Apps
 
Google IO'17
Google IO'17Google IO'17
Google IO'17
 
Construindo Times de Alta Performance - Produtos & Engenharia
Construindo Times de Alta Performance - Produtos & EngenhariaConstruindo Times de Alta Performance - Produtos & Engenharia
Construindo Times de Alta Performance - Produtos & Engenharia
 
Dynamic Programming and Reinforcement Learning applied to Tetris Game
Dynamic Programming and Reinforcement Learning applied to Tetris GameDynamic Programming and Reinforcement Learning applied to Tetris Game
Dynamic Programming and Reinforcement Learning applied to Tetris Game
 
Desenvolvimento de Novos Líderes - Paidéia Educação
Desenvolvimento de Novos Líderes - Paidéia EducaçãoDesenvolvimento de Novos Líderes - Paidéia Educação
Desenvolvimento de Novos Líderes - Paidéia Educação
 
O sucesso do seu app está nos detalhes!
O sucesso do seu app está nos detalhes!O sucesso do seu app está nos detalhes!
O sucesso do seu app está nos detalhes!
 
Go lang
Go langGo lang
Go lang
 
Supporting Coding and Testing
Supporting Coding and TestingSupporting Coding and Testing
Supporting Coding and Testing
 
Semana da Computação USP São Carlos 2014 - Carreira Mobile
Semana da Computação USP São Carlos 2014 - Carreira MobileSemana da Computação USP São Carlos 2014 - Carreira Mobile
Semana da Computação USP São Carlos 2014 - Carreira Mobile
 
TDC 2014 - Tudo sobre GCM Push Notifications
TDC 2014 - Tudo sobre GCM Push NotificationsTDC 2014 - Tudo sobre GCM Push Notifications
TDC 2014 - Tudo sobre GCM Push Notifications
 
Mobile Conf 2014 - Sua carreira e o que o desenvolvimento mobile tem a ver co...
Mobile Conf 2014 - Sua carreira e o que o desenvolvimento mobile tem a ver co...Mobile Conf 2014 - Sua carreira e o que o desenvolvimento mobile tem a ver co...
Mobile Conf 2014 - Sua carreira e o que o desenvolvimento mobile tem a ver co...
 
Conexao Java - Sua primeira app Android
Conexao Java - Sua primeira app AndroidConexao Java - Sua primeira app Android
Conexao Java - Sua primeira app Android
 
7 Masters sobre Android
7 Masters sobre Android7 Masters sobre Android
7 Masters sobre Android
 
A história do surgimento da plataforma móvel Android.
A história do surgimento da plataforma móvel Android.A história do surgimento da plataforma móvel Android.
A história do surgimento da plataforma móvel Android.
 
O fantástico mundo de Android
O fantástico mundo de AndroidO fantástico mundo de Android
O fantástico mundo de Android
 
Usando o Poder da API Fragments
Usando o Poder da API FragmentsUsando o Poder da API Fragments
Usando o Poder da API Fragments
 

Git Merge e Rebase: Uma Comparação

  • 1. Git Merge e Git Rebase
  • 2. The first thing to know is that git rebase and git merge solves the same problem!
  • 3. Integrate changes from one branch into another branch
  • 4. They just do it in very different ways.
  • 6. 1 2 5 6 3 4 master feature
  • 7. 1 2 5 6 3 4 master git checkout master feature head
  • 8. 1 2 5 6 3 4 master git checkout master git merge feature feature 7 head
  • 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
  • 12. 1 2 3 4 master feature git checkout 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.
  • 16. 1 2 5 6 3 4 master feature
  • 17. 1 2 5 6 3 4 master git checkout feature feature head
  • 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.
  • 24. 1 2 5 6 3 4 master feature
  • 25. 1 2 5 6 3 4 7 8 bug_fixfeature master
  • 26. 1 2 5 6 3 4 master 7 8 bug_fixfeature git checkout master head
  • 27. 1 2 5 6 3 4 master 7 8 9 bug_fixfeature git checkout master git merge bug_fix head
  • 28. 1 2 5 6 3 4 master 7 8 9 bug_fix feature x x
  • 29. 1 2 5 6 3 4 master 7 8 9 bug_fix feature x x git checkout master head
  • 30. 1 2 5 6 3 4 master 7 8 9 bug_fix feature x x git checkout master git merge feature y head
  • 32. 1 2 5 6 3 4 master feature
  • 33. 1 2 5 6 3 4 7 8 bug_fixfeature master
  • 34. 1 2 5 6 3 4 master 7 8 bug_fixfeature git checkout master head
  • 35. 1 2 5 6 3 4 master 7 8 9 bug_fixfeature git checkout master git merge bug_fix head
  • 36. 1 2 5 6 3 4 master 7 8 9 bug_fix feature x x
  • 37. 1 2 5 6 3 4 master 7 8 9 bug_fix feature x x git checkout feature head
  • 38. 1 2 5 6 3 47 8 9 bug_fix feature x x git checkout feature git rebase master master head
  • 39. 1 2 5 6 3 47 8 9 bug_fix feature x x git checkout master master head
  • 40. 1 2 5 6 3 47 8 9 bug_fix feature x x git checkout master git merge feature master head y
  • 41. Não manjo nada, colei daqui: ● Mergin vs Rebasing by Atlasin ● Five Agency Git Merge and Rebase simple explanation