Resolver conflitos em uma pull request em um AWS CodeCommit repositório - AWS CodeCommit

AWS CodeCommit não está mais disponível para novos clientes. Os clientes atuais do AWS CodeCommit podem continuar usando o serviço normalmente. Saiba mais

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 pull request em um AWS CodeCommit repositório

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 o AWS CLI para obter informações sobre conflitos de mesclagem e criar uma confirmação de mesclagem não referenciada para testar uma mesclagem.

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

Você pode usar o CodeCommit console para resolver conflitos em uma pull request em um CodeCommit repositório.

  1. Abra o CodeCommit console 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 CodeCommit console.

    • 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 AWS CLI comandos com CodeCommit, instale AWS CLI o. Para obter mais informações, consulte Referência da linha de comando.

Nenhum AWS CLI comando único permite que você resolva conflitos em uma pull request 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 nomeada bugfix-1234 com uma ramificação de destino nomeada main em um repositório chamado: 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 chamada feature-randomizationfeature e uma ramificação de destino chamada main usando a estratégia de mesclagem tripla em um repositório chamado: 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 nomeada feature-randomizationfeature com uma ramificação de destino nomeada main usando a THREE_WAY_MERGE estratégia em um repositório chamado: 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 de um arquivo nomeado readme.md em uma ramificação de origem nomeada feature-randomizationfeature com uma ramificação de destino nomeada main usando a THREE_WAY_MERGE estratégia em um repositório chamado: 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 nomeada bugfix-1234 com uma ramificação de destino nomeada main 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" }