An Interest In:
Web News this Week
- April 19, 2024
- April 18, 2024
- April 17, 2024
- April 16, 2024
- April 15, 2024
- April 14, 2024
- April 13, 2024
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 merge
permite que voc pegue as linhas de desenvolvimento independentes criadas pelogit branch
e 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 checkout
para selecionar o branch atual que ir receber e com ogit branch -d
para excluir o branch alvo obsoleto.
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).
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.
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.
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).
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"
.
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
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To