Partilhar via


Resolução de conflitos

Um conflito ocorre quando são feitas alterações no mesmo item no espaço de trabalho e no repositório Git remoto. Quando ocorre um conflito, o status do Git diz que Conflito e Confirmação está desativado.

Screenshot of a report with a Git status that says conflict.

Importante

Este recurso está em pré-visualização.

Quando você seleciona Atualizar quando há conflitos, uma mensagem notifica que você precisa resolver os conflitos antes de poder atualizar.

Screenshot of error message from source control tab informing about conflicts.

Existem três formas de resolver um conflito:

Resolver conflito na interface do usuário

Selecione Atualizar tudo para ver uma lista de todos os itens com conflitos. Em seguida, você pode selecionar qual versão manter para cada item. Para cada item em conflito, você pode optar por aceitar as alterações recebidas do repositório Git ou manter a versão atual que está no espaço de trabalho.

Screenshot of UI to select which version of a conflicted item to keep.

  • Escolha Aceitar alterações de entrada para substituir as alterações no espaço de trabalho. As alterações do espaço de trabalho são perdidas e o status do Git muda para sincronizado se a importação for bem-sucedida.

  • Escolha Manter conteúdo atual para manter a versão atualmente no espaço de trabalho. Após a conclusão da atualização, o status do Git se torna alterações não confirmadas, pois as alterações no espaço de trabalho ainda não estão confirmadas na ramificação.

Reverter para um estado anterior

Você pode reverter todo o espaço de trabalho ou ramificação do Git para o último estado sincronizado. Se você reverter a ramificação do Git para uma confirmação anterior, ainda poderá ver as alterações feitas na ramificação não sincronizada. Se você reverter o espaço de trabalho, perderá todas as alterações feitas no espaço de trabalho desde a última confirmação.

Para reverter para o estado sincronizado anterior, execute uma das seguintes ações:

  • Use o comando Desfazer para retornar itens conflitantes no espaço de trabalho ao seu último estado sincronizado.
  • Reverta para o último estado sincronizado no Git usando o git revert comando no Azure DevOps.

Você também pode resolver conflitos desconectando e reconectando o espaço de trabalho. Quando voltar a ligar, selecione a direção que pretende sincronizar. No entanto, observe que, quando você se reconecta, ele substitui todos os itens no espaço de trabalho ou ramificação e não apenas os conflitantes. Ele não retorna o espaço de trabalho ou ramificação para o último estado sincronizado. Em vez disso, ele substitui todo o conteúdo em um local com o conteúdo do outro.

Resolver conflitos no git

Se você não tiver certeza de quais alterações foram feitas e qual versão escolher e não quiser reverter para um estado anterior, você pode tentar resolver o conflito no repositório Git criando uma nova ramificação, resolvendo o conflito nessa ramificação e sincronizando-o com o atual.

Nota

Somente um administrador de espaço de trabalho pode reconectar o espaço de trabalho à nova ramificação.

  1. No painel Controle do código-fonte, faça check-out de uma nova ramificação usando o último ID de ramificação sincronizado mostrado na parte inferior da tela

    Screenshot showing how to check out a new branch from the source control pane by selecting the down arrow.

    Screenshot of branch ID information shown on bottom of the screen.

    Esta etapa cria uma nova ramificação a partir da ramificação em conflito usando o último estado sincronizado do Git, antes de serem feitas alterações que entrem em conflito com suas alterações. Você pode ver suas alterações no painel Controle do código-fonte, mas não há nada a ser atualizado da ramificação do Git. A ramificação de check-out mantém o estado atual do espaço de trabalho, portanto, as alterações não confirmadas são mantidas ao alterar a ramificação.

  2. Confirme suas alterações na nova ramificação. Essa nova ramificação agora tem as alterações feitas nos itens conectados a uma versão anterior da ramificação do Git que não entra em conflito com suas alterações.

  3. No git, resolva os conflitos entre o ramo original e o novo ramo.

  4. No git, mescle a nova ramificação na ramificação original

  5. Na Malha, alterne o espaço de trabalho de volta para a ramificação original.