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

AWS Identity and Access Management (IAM): Usuários, Grupos e Funções – Guia básico

Veja nesse guia prático como funciona um dos principais serviços de segurança da AWS, o AWS Identity and Access Management (IAM)! O que é o AWS Identity and Access Management (IAM)? O AWS Identity and Access Management (IAM) é um serviço regional da AWS que permite que você configure e gerencie identidades e seus tipos de acessos. Conceitos No AWS IAM temos alguns conceitos como usuários, grupos, funções, políticas e permissões ( do inglês seria Users, Groups, Roles e Policy Document). E o que é tudo isso e como eles se relacionam? Usuários/Users:  Usuários são pessoas com credenciais permanentes. É importante ressaltar dois pontos:  Sempre use o princípio do Least Privilege – que seria dar a uma identidade somente permissões que ela necessita de fato. Nunca compartilhe o usuário root em hipótese alguma. Grupos/Groups:  Podemos dizer que grupos é o coletivo de usuários, sendo assim não é possível colocar um grupo dentro de outro. Um usuário pode participar de mais de um grupo, mas isso não é obrigatório. Funções/Roles:  A função é um método de autenticação temporária.  Imagine o seguinte: ao chegar na sua casa a sua mãe/usuário root distribui a função de cada um na cozinha e você irá cozinhar. A sua função é cozinhar, mas isso não significa que você se tornou um cozinheiro, pois a ordem da sua mãe é só por hoje, logo temporária. Desta forma, podemos anexar uma função ao usuário, grupo de usuários ou a um serviço. Entretanto, a função não é a sua permissão, continue lendo para entender… Políticas e Permissões/Policy Document Usuários, grupos e funções apenas autenticam, não oferecem autorização para realizar uma determinada ação, quem faz isso é a Policy Document ou Política e Permissões que após serem anexadas, oferecem um tipo específico de permissão. Vamos voltar ao nosso exemplo da cozinha:  A sua mãe/usuário root lhe deu a função de cozinhar (algo temporário, certo?), mas não lhe deu a permissão/policy document de mexer com objetos de vidro, somente com as panelas de aço inox, pois você é um tanto desastrado, afinal ela está respeitando o Least Privilege.  Desta forma, você/usuário recebeu a função/role de cozinhar (algo temporário) com permissão (policy document) mínima de mexer somente com panelas. Agora vamos falar de um exemplo mais próximo do nosso dia a dia? Imagine que você precisa dar um acesso via Interface de Linha de Comando da AWS para o seu estagiário. Logo você irá criar um usuário com credenciais permanentes, após isso irá anexar uma função/role temporária de 1h com a policy document permitindo o acesso via CLI. Maria Lombardi Analista de Infraestrutura em Nuvem maria.lombardi@darede.com.br Formada pelo SENAI em técnica em Redes de Computadores. Maria possui uma vasta e experiência e certificações em nuvem pela AWS. Atualmente ela atua Analista de Infraestrutura em Nuvem Jr em DevOPs na Darede.

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