Git Tutorial - Rebase
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,

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.

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,

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.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook