

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Resolver conflitos em uma solicitação pull em um repositório do AWS CodeCommit
<a name="how-to-resolve-conflict-pull-request"></a>

Se a sua solicitação pull tem conflitos e não pode ser mesclada, você pode tentar resolvê-los de várias maneiras:
+ No computador local, você pode usar o comando **git diff** para localizar os conflitos entre as duas ramificações e fazer alterações para resolvê-los. Você também pode usar uma ferramenta de diferenciação ou outros softwares para ajudar você a localizar e resolver as diferenças. Depois de resolvê-los de forma satisfatória, você pode enviar por push a ramificação de origem com as alterações que contêm os conflitos resolvidos, o que atualizará a solicitação pull. Para obter mais informações sobre **git diff** e **git difftool**, consulte a documentação do Git.
+ No console, você pode selecionar **Resolve conflicts (Resolver conflitos)**. Isso abre um editor de texto simples que mostra conflitos de maneira semelhante ao comando **git diff**. Você pode revisar os conflitos manualmente em cada arquivo que os contém, fazer as alterações e, em seguida, atualizar a solicitação pull com as alterações.
+ No AWS CLI, você pode usar a AWS CLI para obter informações sobre conflitos de mesclagem e criar uma confirmação de mesclagem sem referência para testar uma mesclagem. 

**Topics**
+ [Resolver conflitos em uma solicitação pull (console)](#how-to-resolve-conflict-pull-request-console)
+ [Resolver conflitos em uma solicitação pull (AWS CLI)](#how-to-resolve-conflict-pull-request-cli)

## Resolver conflitos em uma solicitação pull (console)
<a name="how-to-resolve-conflict-pull-request-console"></a>

Você pode usar o console do CodeCommit para resolver conflitos em uma solicitação pull em um repositório do CodeCommit. 

1. Abra o console do CodeCommit em [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home).

1. Em **Repositories (Repositórios)**, escolha o nome do repositório. 

1. No painel de navegação, escolha **Pull Requests (Solicitações pull)**.

1. Por padrão, é exibida uma lista de todas as solicitações de extração abertas. Escolha a solicitação pull aberta que você deseja mesclar, mas que contém conflitos.

1. Na solicitação pull, selecione **Resolve conflicts (Resolver conflitos)**. Essa opção só será exibida se houver conflitos que devem ser resolvidos para que a solicitação pull possa ser mesclada.  
![Uma solicitação pull mostrando que tem conflitos que devem ser resolvidos para que possa ser mesclada.](http://docs.aws.amazon.com/pt_br/codecommit/latest/userguide/images/codecommit-pull-request-resolve-conflicts.png)

1. Uma janela de resolução de conflitos é aberta, listando cada arquivo que tem conflitos que devem ser resolvidos. Escolha cada arquivo na lista para revisar os conflitos e faça as alterações necessárias até que todos eles sejam resolvidos.  
![O editor de resolução de conflitos mostrando um arquivo com conflitos que ainda não foram resolvidos.](http://docs.aws.amazon.com/pt_br/codecommit/latest/userguide/images/codecommit-pull-request-resolve.png)
   + Você pode optar por usar o conteúdo do arquivo de origem, o conteúdo do arquivo de destino, ou se o arquivo não é binário, para editar manualmente o conteúdo de um arquivo para que ele contenha apenas as alterações que você deseja. Os marcadores padrão git diff são usados para mostrar os conflitos entre o destino (HEAD) e as ramificações de origem no arquivo.
   + Se um arquivo é binário, um submódulo do Git, ou se há um conflito de nome de arquivo/pasta, você deve optar por usar o arquivo de origem ou de destino para resolvê-los. Você não pode visualizar ou editar arquivos binários no console do CodeCommit.
   + Se houver conflitos de modo de arquivo, você verá a opção para resolver esse conflito ao escolher entre o modo de arquivo do arquivo de origem e o modo de arquivo do arquivo de destino. 
   + Se você decidir que deseja descartar as alterações em um arquivo e restaurá-lo para o estado que gerou conflito, selecione **Reset file (Redefinir arquivo)**. Isso permite que você resolva os conflitos de forma diferente.

1. Quando você tiver certeza de suas alterações, selecione **Update pull request (Atualizar solicitação pull)**.
**nota**  
Você deve resolver todos os conflitos em todos os arquivos para atualizar com êxito a solicitação pull com as alterações. 

1. A solicitação pull será atualizada com as alterações e poderá ser mesclada. Você verá a página de mesclagem. Você pode optar por mesclar a solicitação pull neste momento ou pode retornar à lista de solicitações pull. 

## Resolver conflitos em uma solicitação pull (AWS CLI)
<a name="how-to-resolve-conflict-pull-request-cli"></a>

Para usar comandos da AWS CLI com o CodeCommit, instale a AWS CLI. Para obter mais informações, consulte [Referência da linha de comando](cmd-ref.md). 

Nenhum comando da AWS CLI sozinho permite que você resolva conflitos em uma solicitação pull e mescle essa solicitação. No entanto, você pode usar comandos individuais para descobrir conflitos, tentar resolvê-los e testar se uma solicitação pull pode ser mesclada. Você pode usar:
+ **get-merge-options**, para descobrir as opções de mesclagem disponíveis para uma mesclagem entre dois especificadores de confirmação.
+ **get-merge-conflicts**, para retornar uma lista de arquivos com conflitos de mesclagem em uma mesclagem entre dois especificadores de confirmação.
+ **batch-describe-merge-conflicts**, para obter informações sobre todos os conflitos de mesclagem em arquivos de uma mesclagem entre duas confirmações usando uma estratégia de mesclagem especificada. 
+ **describe-merge-conflicts**, para obter informações detalhadas sobre conflitos de mesclagem de um arquivo específico entre duas confirmações usando uma estratégia de mesclagem especificada.
+ **create-unreferenced-merge-commit**, para testar o resultado da mesclagem de dois especificadores de confirmação usando uma estratégia de mesclagem especificada.

1. <a name="get-merge-options"></a>Para descobrir as opções de mesclagem disponíveis para uma mesclagem entre dois especificadores de confirmação, execute o comando **get-merge-options**, especificando:
   + Um especificador de confirmação para a origem da mesclagem (com a opção **--source-commit-specifier**).
   + Um especificador de confirmação para o destino da mesclagem (com a opção **--destination-commit-specifier**). 
   + O nome do repositório (com a opção **--repository-name**).
   + (Opcional) Uma estratégia de resolução de conflitos a ser usada (com a opção **--conflict-resolution-strategy**).
   + (Opcional) O nível de detalhes que deseja sobre os conflitos (com a opção **--conflict-detail-level**).

    Por exemplo, para determinar as estratégias de mesclagem disponíveis para mesclar uma ramificação de origem chamada {{bugfix-1234}} com uma ramificação de destino denominada {{principal}} em um repositório denominado {{MyDemoRepo}}:

   ```
   aws codecommit get-merge-options --source-commit-specifier {{bugfix-1234}} --destination-commit-specifier {{main}} --repository-name {{MyDemoRepo}}
   ```

   Se houver êxito, o comando gerará uma saída semelhante à seguinte:

   ```
   {
       "mergeOptions": [
           "FAST_FORWARD_MERGE",
           "SQUASH_MERGE",
           "THREE_WAY_MERGE"
       ],
       "sourceCommitId": "d49940adEXAMPLE",
       "destinationCommitId": "86958e0aEXAMPLE",
       "baseCommitId": "86958e0aEXAMPLE"
   }
   ```

1. <a name="get-merge-conflict"></a>Para obter uma lista de arquivos que contêm conflitos de mesclagem em uma mesclagem entre dois especificadores de confirmação, execute o comando **get-merge-conflicts**, especificando:
   + Um especificador de confirmação para a origem da mesclagem (com a opção **--source-commit-specifier**).
   + Um especificador de confirmação para o destino da mesclagem (com a opção **--destination-commit-specifier**). 
   + O nome do repositório (com a opção **--repository-name**).
   + A opção de mesclagem a ser usada (com a opção **--merge-option**).
   + (Opcional) O nível de detalhes que deseja sobre os conflitos (com a opção **--conflict-detail-level**).
   + (Opcional) Uma estratégia de resolução de conflitos a ser usada (com a opção **--conflict-resolution-strategy**).
   + (Opcional) O número máximo de arquivos com conflitos a serem retornados (com a opção **--max-conflict-files**).

   Por exemplo, para obter uma lista de arquivos que contêm conflitos em uma mesclagem entre uma ramificação de origem denominada feature-randomizationfeature e uma ramificação de destino denominada principal usando a estratégia de mesclagem de três vias em um repositório denominado MyDemoRepo:

   ```
   aws codecommit get-merge-conflicts --source-commit-specifier feature-randomizationfeature --destination-commit-specifier main --merge-option THREE_WAY_MERGE --repository-name MyDemoRepo
   ```

   Se houver êxito, o comando gerará uma saída semelhante à seguinte:

   ```
   {
       "mergeable": false,
       "destinationCommitId": "86958e0aEXAMPLE",
       "sourceCommitId": "6ccd57fdEXAMPLE",
       "baseCommitId": "767b6958EXAMPLE",
       "conflictMetadataList": [
           {
               "filePath": "readme.md",
               "fileSizes": {
                   "source": 139,
                   "destination": 230,
                   "base": 85
               },
               "fileModes": {
                   "source": "NORMAL",
                   "destination": "NORMAL",
                   "base": "NORMAL"
               },
               "objectTypes": {
                   "source": "FILE",
                   "destination": "FILE",
                   "base": "FILE"
               },
               "numberOfConflicts": 1,
               "isBinaryFile": {
                   "source": false,
                   "destination": false,
                   "base": false
               },
               "contentConflict": true,
               "fileModeConflict": false,
               "objectTypeConflict": false,
               "mergeOperations": {
                   "source": "M",
                   "destination": "M"
               }
           }
       ]
   }
   ```

1. <a name="batch-describe-merge-conflicts"></a>Para obter informações sobre conflitos de mesclagem em todos os arquivos ou um subconjunto de arquivos em uma mesclagem entre dois especificadores de confirmação, execute o comando **batch-describe-merge-conflicts**, especificando:
   + Um especificador de confirmação para a origem da mesclagem (com a opção **--source-commit-specifier**).
   + Um especificador de confirmação para o destino da mesclagem (com a opção **--destination-commit-specifier**). 
   + A opção de mesclagem a ser usada (com a opção **--merge-option**).
   + O nome do repositório (com a opção **--repository-name**).
   + (Opcional) Uma estratégia de resolução de conflitos a ser usada (com a opção **--conflict-resolution-strategy**).
   + (Opcional) O nível de detalhes que deseja sobre os conflitos (com a opção **--conflict-detail-level**).
   + (Opcional) O número máximo de blocos de mesclagem a serem retornados (com a opção **--max-merge-hunks**).
   + (Opcional) O número máximo de arquivos com conflitos a serem retornados (com a opção **--max-conflict-files**).
   + (Opcional) O caminho de arquivos de destino a ser usado para descrever os conflitos (com a opção **--file-paths**).

    Por exemplo, para determinar os conflitos de mesclagem para mesclar uma ramificação de origem denominada {{feature-randomizationfeature}} com uma ramificação de destino denominada {{principal}} usando a estratégia {{THREE\_WAY\_MERGE}} em um repositório denominado {{MyDemoRepo}}:

   ```
   aws codecommit batch-describe-merge-conflicts --source-commit-specifier {{feature-randomizationfeature}} --destination-commit-specifier {{main}} --merge-option {{THREE_WAY_MERGE}} --repository-name {{MyDemoRepo}}
   ```

   Se houver êxito, o comando gerará uma saída semelhante à seguinte:

   ```
   {
       "conflicts": [
           {
               "conflictMetadata": {
                   "filePath": "readme.md",
                   "fileSizes": {
                       "source": 139,
                       "destination": 230,
                       "base": 85
                   },
                   "fileModes": {
                       "source": "NORMAL",
                       "destination": "NORMAL",
                       "base": "NORMAL"
                   },
                   "objectTypes": {
                       "source": "FILE",
                       "destination": "FILE",
                       "base": "FILE"
                   },
                   "numberOfConflicts": 1,
                   "isBinaryFile": {
                       "source": false,
                       "destination": false,
                       "base": false
                   },
                   "contentConflict": true,
                   "fileModeConflict": false,
                   "objectTypeConflict": false,
                   "mergeOperations": {
                       "source": "M",
                       "destination": "M"
                   }
               },
               "mergeHunks": [
                   {
                       "isConflict": true,
                       "source": {
                           "startLine": 0,
                           "endLine": 3,
                           "hunkContent": "VGhpcyBpEXAMPLE=="
                       },
                       "destination": {
                           "startLine": 0,
                           "endLine": 1,
                           "hunkContent": "VXNlIHRoEXAMPLE="
                       }
                   }
               ]
           }
       ],
       "errors": [],
       "destinationCommitId": "86958e0aEXAMPLE",
       "sourceCommitId": "6ccd57fdEXAMPLE",
       "baseCommitId": "767b6958EXAMPLE"
   }
   ```

1. <a name="describe-merge-conflicts"></a>Para obter informações detalhadas sobre conflitos de mesclagem de um arquivo específico em uma mesclagem entre dois especificadores de confirmação, execute o comando **describe-merge-conflicts**, especificando:
   + Um especificador de confirmação para a origem da mesclagem (com a opção **--source-commit-specifier**).
   + Um especificador de confirmação para o destino da mesclagem (com a opção **--destination-commit-specifier**). 
   + A opção de mesclagem a ser usada (com a opção **--merge-option**).
   + O caminho do arquivo de destino a ser usado para descrever os conflitos (com a opção **--file-path**).
   + O nome do repositório (com a opção **--repository-name**).
   + (Opcional) Uma estratégia de resolução de conflitos a ser usada (com a opção **--conflict-resolution-strategy**).
   + (Opcional) O nível de detalhes que deseja sobre os conflitos (com a opção **--conflict-detail-level**).
   + (Opcional) O número máximo de blocos de mesclagem a serem retornados (com a opção **--max-merge-hunks**).
   + (Opcional) O número máximo de arquivos com conflitos a serem retornados (com a opção **--max-conflict-files**).

   Por exemplo, para determinar os conflitos de mesclagem em um arquivo denominado {{readme.md}} em uma ramificação de origem denominada {{feature-randomizationfeature}} com uma ramificação de destino chamada {{principal}} usando a estratégia {{THREE\_WAY\_MERGE}} em um repositório denominado {{MyDemoRepo}}:

   ```
   aws codecommit describe-merge-conflicts --source-commit-specifier {{feature-randomizationfeature}} --destination-commit-specifier {{main}} --merge-option {{THREE_WAY_MERGE}} --file-path {{readme.md}} --repository-name {{MyDemoRepo}}
   ```

   Se houver êxito, o comando gerará uma saída semelhante à seguinte:

   ```
   {
       "conflictMetadata": {
           "filePath": "readme.md",
           "fileSizes": {
               "source": 139,
               "destination": 230,
               "base": 85
           },
           "fileModes": {
               "source": "NORMAL",
               "destination": "NORMAL",
               "base": "NORMAL"
           },
           "objectTypes": {
               "source": "FILE",
               "destination": "FILE",
               "base": "FILE"
           },
           "numberOfConflicts": 1,
           "isBinaryFile": {
               "source": false,
               "destination": false,
               "base": false
           },
           "contentConflict": true,
           "fileModeConflict": false,
           "objectTypeConflict": false,
           "mergeOperations": {
               "source": "M",
               "destination": "M"
           }
       },
       "mergeHunks": [
           {
               "isConflict": true,
               "source": {
                   "startLine": 0,
                   "endLine": 3,
                   "hunkContent": "VGhpcyBpEXAMPLE=="
               },
               "destination": {
                   "startLine": 0,
                   "endLine": 1,
                   "hunkContent": "VXNlIHRoEXAMPLE="
               }
           }
       ],
       "destinationCommitId": "86958e0aEXAMPLE",
       "sourceCommitId": "6ccd57fdEXAMPLE",
       "baseCommitId": "767b69580EXAMPLE"
   }
   ```

1. <a name="create-unreferenced-merge-commit"></a>Para criar uma confirmação sem referência que representa o resultado da mesclagem de dois especificadores de confirmação, execute o comando **create-unreferenced-merge-commit**, especificando:
   + Um especificador de confirmação para a origem da mesclagem (com a opção **--source-commit-specifier**).
   + Um especificador de confirmação para o destino da mesclagem (com a opção **--destination-commit-specifier**). 
   + A opção de mesclagem a ser usada (com a opção **--merge-option**).
   + O nome do repositório (com a opção **--repository-name**).
   + (Opcional) Uma estratégia de resolução de conflitos a ser usada (com a opção **--conflict-resolution-strategy**).
   + (Opcional) O nível de detalhes que deseja sobre os conflitos (com a opção **--conflict-detail-level**).
   + (Opcional) A mensagem de confirmação a ser incluída (com a opção **--commit-message**).
   + (Opcional) O nome a ser usado para a confirmação (com a opção **--name**).
   + (Opcional) O endereço de e-mail a ser usado para a confirmação (com a opção **--email**).
   + (Opcional) Opção de manter pastas vazias (com a opção **--keep-empty-folders**).

    Por exemplo, para determinar os conflitos de mesclagem para mesclar uma ramificação de origem denominada {{bugfix-1234}} com uma ramificação de destino denominada {{principal}} usando a estratégia ACCEPT\_SOURCE em um repositório chamado {{MyDemoRepo}}:

   ```
   aws codecommit create-unreferenced-merge-commit --source-commit-specifier {{bugfix-1234}} --destination-commit-specifier {{main}} --merge-option THREE_WAY_MERGE --repository-name {{MyDemoRepo}} --name "Maria Garcia" --email "maria_garcia@example.com" --commit-message "Testing the results of this merge."
   ```

   Se houver êxito, o comando gerará uma saída semelhante à seguinte:

   ```
   {
       "commitId": "4f178133EXAMPLE",
       "treeId": "389765daEXAMPLE"
   }
   ```