Continuando a série de artigos sobre Git, nosso #cloudspecialist Thiago Marques traz agora um artigo que aborda a diferença entre merge e rebase! Confere aí!

10/02/2023

Por Thiago Marques

O pai tá on!!

Em nosso último post falamos sobre o poder que o GIT tem na utilização de ramificações (branches), contudo isso gera uma grandedúvida: Beleza, mas como faço para juntar a minha ramificação conteúdo, com a ramificação principal (master/main)?

Nesse post iremos falar sobre o merge que é justamente poder juntar branches, e a diferença entre um merge e um rebase.

Git merge

O comando git merge é a forma que o git possui de unificar branches, ou seja, com ele conseguimos do branch atual puxar o histórico do branch alvo, gerando um commit de unificação.

Isso ocorre apenas no branch onde vamos unificar, para o branch ‘alvo’, vai ser como as alterações não tivessem ocorrido.

Na prática, o git vai avaliar os dois históricos dos branches, e tentar mesclar automaticamente os históricos. o que as vezes não dá certo e ocorrem os famosos conflitos, onde é necessário intervenção do usuário para conclusão.

Para evitar os conflitos, o ideal é sempre seguir um bom procedimento de passos, no qual recomendo o sugerido pela Atlassian, cito-o:

1.      Entre no branch que vai receber o merge, ou seja, aquele que desejamos manter depois da unificação;

2.      Atualize os commits mais recentes nas duas branches, o que pode ser feito com o comando:

git fetch –all

3.      Execute o merge com o comando:

git merge <branch_alvo>

 

Para ficar mais claro, vamos imaginar o seguinte cenário: Temos a branch principal (main), que é a responsável pelas matérias do blog. Então criamos a branch conteudo, que irá focar em todo tipo de conteúdo projeto em si, e por fim, para segmentar ainda mais criamos uma ramificação dentro da branch artigos que vai focar apenas em artigos científicos (que é exatamente o que fizemos com o exemplo do visualizing no último post).

Agora precisamos unificar todos os branches no principal para assim ter os conteúdos para postar no blog, com isso temos os seguintes passos:

1.      Criar o branch conteudo e executar dois commits;

2.      Executar dois commits na branch master;

3.      Criar o branch artigos como ‘filha’ da branch conteúdos, e executar dois commits;

4.      Criar o merge da branch conteúdo com a artigos;

5.      Criar o merge da branch artigos com a principal;

Obs.: Para o merge sempre conectamos na branch que vai RECEBER o merge, e PUXAMOS o histórico da branch que queremos.

Colocando a mão na massa temos:

Git rebase

O rebase é uma outra forma de se juntar branches, contudo com algumas características mais ‘radicais’. Apesar de manter o histórico de forma linear, ele pega os logs do branch ativo e coloca na frente do branch alvo, além de não gerar o ‘commit de merge’.

Note que mesmo isso gerando um histórico linear, gera um problema, pois ele mexe com a estrutura dos branches, reescrevendo todo o histórico dos commits. E justamente por características assim é que existe uma regra de ouro que recomenda que não seja feito rebase em branches públicos, uma vez que a possibilidade de ‘dar ruim’ é grande.

O comando que usamos para fazer o rebase é:

  • #logado na branch principal
  • git rebase <branch_secundária>

Ressaltando mais uma vez: o rebase tem um grande poder, mas como diria o Tio Bem: “com grandes poderes vem grandes responsabilidades”, então utilize ele em situações especifica.

That’s all folks! Be Happy!!!

foto-thiago-marques
Thiago Marques Technical Account Manager
thiago.marques@darede.com.br

Technical Account Manager da Darede, formato em Rede de Computadores, e pós graduado em Segurança da Informação. Possui ampla experiência em Datacenters e Service Providers, além de ser um entusiasta em DevOps e mercado financeiro.

OUTRAS PUBLICAÇÕES

Novidades AWS re:Invent 2021

Todos os anos a AWS promove o AWS re:Invent,o maior evento de cloud do mundo. E a Darede selecionou as melhores novidades! Confere aí!

Git:Merge e Rebase

Continuando a série de artigos sobre Git, nosso #cloudspecialist Thiago Marques traz agora um artigo que aborda a diferença entre merge e rebase! Confere aí!

Nós usamos cookies para garantir e oferecer a melhor experiência de navegação em nosso site! Mais informações