Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
January 13, 2022 02:41 pm GMT

Conceito de Merge Git e Github

Aps conhecermos a to famosa Branch que tem como propsito dividir a linha original do desenvolvimento do projeto, precisamos "trazer" de volta para a branch main/master, dei uma breve explicao de como fazer isso em Conceito de branch, porm chegou a hora de se aprofundar no merge e resolver os possveis conflitos que iro aparecer(uma hora ou outra).

Merge

O merge(mesclagem) o jeito do Git de pegar duas branchs e unificar em apenas um histrico. O comandogit mergepermite que voc pegue as linhas de desenvolvimento independentes criadas pelogit branche junta elas em apenas uma ramificao.

de extrema importncia ter algo bem claro na hora de realizar um merge, sempre a branch que voc est (HEAD) vai ser a que vai "receber" a branch, sendo atualizado para refletir a mesclagem, a branch alvo no sofre nenhum tipo de alterao.

git merge usado sempre depois dogit checkoutpara selecionar o branch atual que ir receber e com ogit branch -dpara excluir o branch alvo obsoleto.

Ilustrao de varias ramificaes

Merge na prtica

Vamos utilizar um exemplo prtico, digamos que voc desenvolveu um Header bem bsico representado pela branch feat/header (Nomenclatura tirada do Git Flow, explicarei futuramente).

Branch criada com o header

Depois de ter criado uma branch com git checkcout -b feat/header (Lembrando que a flag -b do checkout cria uma branch e j move para ela), realizamos as criaes necessrias e commitamos o arquivo index.html com git commit -am "feat: header"(Lembrando que a flag -am adiciona os arquivos e j realiza o commit).

Agora o que precisamos fazer para juntar essa nova feature na branch principal, precisamos ir para a branch receptora, sempre atento para onde o HEAD est apontado, e realizamos o merge. Uma vez que a branch ficou obsoleta podemos excluir ela.

Output aps o comando merge

Resolvendo Conflitos

Durante o processo de criao e branchs e a juno com o merge, possvel que mais de um desenvolvedor edite a mesma linha de cdigo, com isso o Git gera um conflito, por ter dois commits o Git no sabe qual utilizar, e no consegue resolver esse problema sozinho, necessrio que o usurio decida qual o correto.

Digamos que voc ficou responsvel por editar um link do header e um colega recebeu uma task para alterar a logo do footer, porm acabou adicionando alguns caracteres sem querer no link que voc est alterando.

Primeiro voc cria uma nova branch de correo e realiza a alterao, cria um commit e mescla com a branch master, durante esse processo um colega adicionou o caractere acidental e realizou um commit na master.

Nossa alterao:
Alteraes no Index.html

Acidente:
Index.html com as alteraes acidentais

Voc finalizou todas as alteraes e da um git checkout master que ser a branch receptora, e realiza o git merge fix/header, e acaba vendo um output no terminal CONFLICT, e repara que algo mudou no editor de texto (Visual Studio Code).

Terminal:
Output terminal conflict

Visual Studio Code:
Vistual Studio Code resolvendo conflito

Reparamos que ele adicionou alguns caracteres:
<<<<<<< Branch receptora (HEAD)
>>>>>>> Branch de mesclagem (fix/header)
======= Separa as branchs, o de cima represente a branch recepctora e de baixo a de mesclagem.

E podemos ver que existe um menu (clicavel) acima do conflito, nele existe algumas opes rpidas que podemos realizar, as mais importantes so:

Accept Current Change: Ir aceitar a branch receptora, nesse caso ele iria manter os caracteres acidentais.
Accept Incoming Change: Ir aceitar a alterao realizada no header, nesse caso seria "Conhea nossa empresa"
Accpet Both Changes: Ele aceita as duas modificaes, criando ento duas linhas, uma com os caracteres e outra com as alteraes.

No nosso caso queremos aceitar apenas o Accept Incoming Change para manter as alteraes que realizamos na branch fix/header, podemos ver que nada muda, por que os arquivos conflitantes agora esto como "Unmerged patch", precisamos adicionar ele no prximo commit git add . e criar um commit de resoluo git commit -m "resolve conflitos no header".

Terminal de commit do conflito

E pronto temos o nosso conflito mais comum de acontecer resolvido e j podemos excluir a branch obsoleta das modificaes.


Original Link: https://dev.to/eduardoopv/conceito-de-merge-git-e-github-4j0g

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To