Git Tutorial - Rebase

  1. O que é git rebase?
  2. Workflow de Rebase
  3. Regra de ouro do rebaseamento

Nós cobrimos fusões básicas como

  • Fusão rápida

  • Fusão em três vias (recursiva)

Neste tutorial, vamos introduzir uma das características mais importantes do git - rebasing.

O que é git rebase?

Rebase significa que você está mudando o commit da raiz dos ramos baseado, ou em outras palavras, você está resetando o commit da base para o commit recente do ramo que você está planejando fundir, como o ramo master.

Vamos ver como isto se parece,

Ramo de Destaques Git

Nós temos os ramos master e Feature neste diagrama e enquanto trabalhávamos no nosso ramo Feature, outros membros da equipe continuaram a fazer algum trabalho no master.

Nós queremos rebasear nosso branch antes de fundi-lo de volta no master e quando rodamos o comando rebase, ele muda o commit em que nosso branch de testes é baseado ao invés de apontar para C3 ao invés de C1. O gráfico abaixo mostra o que acontece após o rebase.

Ramo de Característica de Git

Quando fundimos as alterações, só tem de fazer uma fusão rápida novamente, porque os commits são agora baseados no último commit do master. É por isso que o rebasing é uma das características mais poderosas do git.

Depois que você fundir este ramo rebased Feature para o master, o gráfico de log de commit será como abaixo,

Gráfico de Git log após rebaseamento

Parece que o ramo Feature nunca existiu e todos os registros de commit estão na linha reta.

Workflow de Rebase

  • Criar o ramo de característica
    $ git checkout -b Feature
    
  • Faça mudanças neste ramo e comprometa-se
    $ git add modified.txt
    $ git commit -m 'coment here'
    
  • Rebase ramo de recurso para master
    $ git rebase master
    
  • Fundir o ramo de recursos rebaixado no master
    $ git checkout master
    $ git merge Feature
    

Regra de ouro do rebaseamento

A regra de ouro é nunca rebaixar um ramo que você disponibilizou publicamente por causa da reescrita da história.

Se você rebase um ramo público e alguém trabalha fora desse ramo depois que você rebase obter essas novas alterações no seu ramo master será muito difícil porque os outros desenvolvedores ainda trabalham com o ramo original master.