Resolver conflitos em uma solicitação pull em um repositório do AWS CodeCommit - AWS CodeCommit

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

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.

Resolver conflitos em uma solicitação pull (console)

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.

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

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

  4. 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.

  5. 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.
  6. 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.
    • 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.

  7. 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.

  8. 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)

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.

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. 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" }
  2. 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" } } ] }
  3. 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" }
  4. 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" }
  5. 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" }