Editado 3 meses atrás por ExtremeHow Equipe Editorial
GitConflitos de MesclagemJanelasMacLinuxColaboraçãoRamificaçãoSolução de problemasControle de versãoGerenciamento de CódigoProdutividade
Tradução atualizada 3 meses atrás
Trabalhar com o Git, mesclando branches é uma parte essencial da colaboração. Os desenvolvedores podem trabalhar em diferentes funcionalidades ou correções criando diferentes branches, e uma vez que o trabalho está concluído, esses branches precisam ser mesclados com o branch principal ou entre si. No entanto, isso às vezes pode levar a conflitos de mesclagem. Vamos aprender o que são conflitos de mesclagem e como resolvê-los efetivamente.
Conflitos de mesclagem no Git ocorrem quando alterações de um branch entram em conflito com alterações de outro branch. Isso geralmente ocorre quando dois desenvolvedores modificam a mesma linha no mesmo arquivo ou quando um desenvolvedor exclui um arquivo enquanto outro desenvolvedor o edita.
Conflitos podem ocorrer em vários níveis – incluindo o nível da linha, o nível do arquivo, ou até mesmo em toda a estrutura do diretório – mas na maioria dos cenários, conflitos são questões de nível de linha que requerem intervenção do desenvolvedor para serem resolvidos.
Mesclagem é o processo de combinar alterações de dois branches. Quando você inicia uma operação de mesclagem, o Git tenta automaticamente aplicar as alterações de um branch ao branch atual. Se o Git encontrar alterações conflitantes, ele declara um conflito de mesclagem e interrompe o processo de mesclagem para obter intervenção do usuário para resolver as discrepâncias antes de continuar o processo.
Quando ocorre um conflito de mesclagem, o Git providenciará informações relevantes para detectar os conflitos. Ele retorna mensagens de erro indicando os arquivos envolvidos no conflito. Você pode usar o comando git status
para ver a lista de arquivos que possuem conflitos.
Depois de localizar os arquivos com conflitos, abra-os usando seu editor de texto favorito. Dentro desses arquivos, você verá marcadores de conflito que o Git usa para indicar partes do código que estão em conflito. Eles parecerão algo assim:
<<<<<<< HEAD Suas alterações no branch atual ======= Alterações do branch que você estava mesclando >>>>>>> nome-do-branch
Aqui, o código entre <<<<<<< HEAD
e =======
mostra as alterações no seu branch atual, enquanto o código entre =======
e >>>>>>> nome-do-branch
exibe as alterações no branch que você está tentando mesclar.
Resolver conflitos envolve decidir quais alterações das duas versões serão mantidas. Você tem várias opções:
Depois de resolver os conflitos em um arquivo em particular, remova os marcadores de conflito do Git.
Após resolver os conflitos e limpar os marcadores de conflito, marque o arquivo como resolvido usando o comando git add <file>
. Isso indica ao Git que você resolveu manualmente os conflitos e está pronto para prosseguir.
Uma vez que todos os conflitos estejam resolvidos e marcados como tal, você pode completar o processo de mesclagem fazendo o commit das alterações. Execute o seguinte comando:
git commit
Este comando abrirá um editor de texto para adicionar uma mensagem de commit. Por padrão, o Git fornece uma mensagem indicando o commit de mesclagem.
Embora a ferramenta de linha de comando seja poderosa, você pode preferir uma ferramenta gráfica para resolver conflitos. Vários clientes do Git, como SourceTree, GitKraken, ou ambientes de desenvolvimento integrados (IDEs) como o Visual Studio Code, podem ajudar a identificar visualmente conflitos de integração.
Por exemplo, o Visual Studio Code tem resolução de conflitos do Git embutida. Quando você abre um arquivo que tem um conflito, ele exibirá opções para escolher entre a alteração atual ou uma alteração recebida diretamente na interface do editor.
Embora conflitos às vezes sejam inevitáveis, adotar certas práticas pode reduzir significativamente sua frequência:
git rebase
para incorporar as alterações do branch principal antes de mesclar seu branch.Rebase é um processo que permite mover ou combinar uma sequência de commits em um commit base diferente. Isso pode ajudá-lo a resolver conflitos rapidamente, permitindo que você aplique suas alterações sobre as alterações mais recentes do branch de destino. Isso torna o histórico de commits linear, reduzindo potenciais conflitos de mesclagem.
No entanto, use o rebase com cautela em um ambiente colaborativo, pois ele reescreve o histórico de commits, o que pode causar problemas se nem todos os membros da equipe estiverem cientes.
Conflitos de mesclagem no Git são, na verdade, um aspecto comum do desenvolvimento colaborativo. Embora possam ser desafiadores, entender como identificá-los e resolvê-los é a chave para manter um fluxo de trabalho tranquilo. Com cuidado, comunicação eficaz e integração regular de alterações, você pode minimizar sua ocorrência e impacto. Seguindo as práticas delineadas — aproveitando tanto as ferramentas de linha de comando quanto as ferramentas gráficas — garantirá que você lide com conflitos de mesclagem de maneira eficiente e confiável.
Se você encontrar algo errado com o conteúdo do artigo, você pode