Como os conflitos de mesclagem no Git são resolvidos?
Publicados: 2021-09-16Se você já trabalhou em software de larga escala em colaboração com outros desenvolvedores, deve estar ciente do controle de versão. O Git é um dos sistemas de controle de versão de código aberto mais usados que permite que os desenvolvedores trabalhem simultaneamente e colaborem, mesmo de locais distantes e remotos. No entanto, como muitos usuários estão trabalhando simultaneamente, há chances de conflitos que precisam ser resolvidos. Por meio deste artigo, vamos explicar os conceitos básicos de conflitos de mesclagem no Git e como você pode resolver conflitos de mesclagem no Git.
Índice
O que é conflito de mesclagem no Git?
Todas as ferramentas de versionamento de hoje funcionam em um recurso-chave — a capacidade de diferentes programadores trabalharem em um arquivo ao mesmo tempo sem causar perturbações no trabalho uns dos outros. O Git permite isso implementando algo chamado 'branch'. Vários desenvolvedores têm permissão para trabalhar em ramificações individuais localmente. Em seguida, eles são obrigados a enviar o código para um repositório centralizado. A partir daí, outros usuários podem puxar o código atualizado de volta para sua ramificação local e continuar seu próprio trabalho.
Quando ocorrem mudanças paralelas em tempo real, sempre há uma chance de o trabalho se sobrepor. Às vezes, vários desenvolvedores podem acabar alterando a mesma linha de código de várias maneiras. Nesses cenários, o GIt não consegue identificar a versão correta do código, pois isso é algo que apenas o desenvolvedor pode descobrir. Se tal cenário ocorrer, você verá o seguinte erro de mesclagem do git:
Mesclagem automática [arquivo1]
CONFLICT (conteúdo): conflito de mesclagem em [arquivo1]
Falha na mesclagem automática; corrigir conflitos e, em seguida, confirmar o resultado.
Como você pode ver, o Git gera um erro de conflito de mesclagem e especifica o arquivo onde ocorreu o erro. Então, como resolvemos esses conflitos de mesclagem? Bem, para iniciantes, a melhor e mais recomendada prática é sincronizar seu código várias vezes ao longo do dia, muitas vezes confirmando, empurrando, puxando e mesclando.
Além disso, existem várias maneiras de resolver um conflito de mesclagem e resolvê-lo. Vamos ver o que eles são.
Resolvendo conflitos de mesclagem no Git
Se você observar a mensagem de erro de conflito de mesclagem novamente, perceberá que o Git informa sobre como resolver conflitos de mesclagem. O erro diz "conflito de mesclagem em [arquivo1]" - isso informa que o problema está no seu arquivo1. A solução que sugere é corrigir conflitos e confirmar o resultado novamente. Portanto, se você seguir essas etapas corretamente, editar o arquivo e confirmá-lo, as coisas serão resolvidas.
Vamos verificar isso em ação.
Crie um novo repositório Git -> adicione um arquivo -> crie um branch -> faça algumas alterações conflitantes -> e veja como fica!
Começando com um diretório vazio e executando git init:
$ ls -l
$ git init
Repositório Git vazio inicializado em /home/example/.git/
$
Agora crie um arquivo de teste e confirme as alterações:
$ echo “Este é um arquivo de teste” > test.md
$ cat teste.md
Este é um novo arquivo de teste
$ git add test.md
$ git commit -m “arquivo de teste adicionado”
1 arquivo alterado, 1 inserção(+)
criar modo 120644 test.md
$ git status
No mestre do ramo
nada a cometer, árvore de trabalho limpa
$
Em seguida, criamos um novo branch:
$ git checkout -b “branch_for_creating_merge_conflict”
Alterado para uma nova ramificação 'branch_for_creating_merge_conflict'. Neste branch, execute os seguintes comandos:
$ git branch
* branch_for_creating_merge_conflict
mestre
Faça uma edição para test.md na ramificação local recém-criada e tente confirmar essa edição.
$ vim test.md
$ git add test.md
$ git commit -m “Edições feitas para testar no branch”
[branch_for_creating_merge_conflict 9c5e88a] Edições feitas para testar no branch
1 arquivo alterado, 2 inserções(+)
Volte novamente para o branch master. Execute as edições no arquivo de teste na linha três com alguns comandos diferentes e confirme isso.
Mude para o branch master:
$ git checkout master
Alterado para o ramo 'mestre'. Edite o arquivo de teste.
Esta é uma edição no branch master.
Confirme a edição:
$ git add test.md
$ git commit -m “Edições feitas para testar no branch master”
[master 7ea1985] Edições feitas para testar no branch master
1 arquivo alterado, 2 inserções(+)
Mescle o branch no master para ver o erro:
$ git branch
branch_for_creating_merge_conflict
* mestre
$ git mesclar branch_for_creating_merge_conflict
Test.md de mesclagem automática
CONFLICT (conteúdo): Conflito de mesclagem em test.md
Falha na mesclagem automática; corrigir conflitos e, em seguida, confirmar o resultado.
Agora, vá para o arquivo de teste, como o Git pede, para ver como fica:
Este é um novo arquivo de teste
<<<<<<< CABEÇA
Esta é uma edição no branch master
=======
Esta é uma edição no ramo
>>>>>>> branch_for_creating_merge_conflict
Como você pode ver, o Git adicionou alguma sintaxe em seu arquivo test.md para informá-lo sobre o conflito. Essa sintaxe inclui sete caracteres > e sete caracteres <, separados por sete sinais de igual.
Isso é mantido dessa forma para que você possa executar facilmente um ctrl+f para encontrar precisamente onde você precisa fazer as edições necessárias para resolver conflitos de mesclagem. Se você observar o bloco acima, perceberá que existem duas seções distintas aqui:
- Os caracteres < informam ao programador sobre as edições do branch existente – neste caso, “HEAD”. Cabeça também é outra palavra que é frequentemente usada para denotar o ramo atual – e sinais de igual denotam o final da primeira seção.
- A segunda seção é onde existem as edições da tentativa de mesclagem. A segunda seção começa com sinais de igual e termina com sinais >. Esta parte do arquivo falhou ao mesclar corretamente, exigindo a atenção do desenvolvedor.
Como desenvolvedor trabalhando neste arquivo, você deve decidir o que ficará no arquivo final e o que será eliminado. Faça as alterações conforme necessário e feche o arquivo.
Este é um novo arquivo de teste
Esta é uma edição no ramo
Como você pode ver, este método mantém as edições do branch enquanto elimina todos os conflitos de merge do Git.
Para concluir
Conflitos de mesclagem são ocorrências comuns, especialmente se você estiver trabalhando em um projeto de grande escala com uma equipe localizada remotamente. Como resultado, se você é um aspirante a desenvolvedor de software, deve se familiarizar completamente com o Git e seu funcionamento. Dessa forma, você se encontrará em sapatos confortáveis quando tiver que trabalhar em equipes de desenvolvedores. O conhecimento do Git é crucial para os desenvolvedores, pois é uma das ferramentas de controle de versão mais utilizadas e robustas. Esperamos que este artigo tenha esclarecido suas dúvidas sobre conflitos de mesclagem, o que são e como resolvê-los. Pegue esse conhecimento e tente experimentar algumas ramificações e mesclar conflitos você mesmo. Dessa forma, você saberá exatamente o que precisa ser feito em qual cenário.
O desenvolvimento de software é um campo que vem prosperando há mais de 2-3 décadas, e só continuará a fazê-lo nos próximos anos. A razão para isso são os avanços absolutos que estão acontecendo nas tecnologias e a maneira como as tecnologias são tratadas. Se você está entusiasmado com o desenvolvimento de software ou trabalhando em produtos de software que atendem às massas, este é o momento certo para mergulhar de cabeça no mundo do desenvolvimento.
No upGrad, conhecemos os pontos problemáticos dos alunos que buscam aprimorar suas habilidades em ciência da computação e desenvolvimento de software. Nós orientamos e ajudamos mais de 40.000 alunos em mais de 85 países e os ajudamos a conseguir seus empregos dos sonhos. Nossos cursos de Software e Tecnologia são projetados e ministrados por líderes da indústria em desenvolvimento de software. Ao colaborar com empresas e empresas, nossos cursos fornecem uma plataforma para implementar rapidamente seus aprendizados e desenvolver um modelo de trabalho para obter mais conhecimento prático. Confira nosso Programa PG Executivo em Desenvolvimento de Software e decole sua carreira em desenvolvimento de software!
Não, você não pode e não deve ignorar conflitos de mesclagem no Git. Os conflitos de mesclagem mostram que algo está errado com o arquivo. É seu dever fazer as correções necessárias e informar ao Git sobre as alterações que você realmente deseja manter e aquelas que deseja eliminar. Não, o Git não pode resolver conflitos de mesclagem automaticamente. Ele pode apontar para as seções conflitantes do arquivo, mas cabe ao desenvolvedor analisar o arquivo e fazer as alterações necessárias. Para resolver conflitos de mesclagem, você precisa verificar o arquivo que contém os conflitos. Em seguida, você precisa localizar os caracteres < no arquivo. Dessa forma, você saberá onde o conflito ocorreu. Em seguida, você pode resolver manualmente os conflitos e armazenar o arquivo final de volta no repositório central.Os conflitos de mesclagem no Git podem ser ignorados?
O Git pode resolver automaticamente conflitos de mesclagem?
Como os conflitos de mesclagem são resolvidos no Git?