

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Risolvi i conflitti in una pull request in un AWS CodeCommit repository
<a name="how-to-resolve-conflict-pull-request"></a>

Se la richiesta di pull presenta dei conflitti e non può essere unita, è possibile provare a risolvere i conflitti in uno dei seguenti modi:
+ Sul computer locale, è possibile utilizzare il comando **git diff** per trovare i conflitti tra i due rami e apportare modifiche per risolverli. È inoltre possibile utilizzare uno strumento delle differenze o altri prodotti software per aiutare i clienti a individuare e risolvere le differenze. Dopo averli risolti in modo soddisfacente, puoi inviare al ramo sorgente le modifiche che contengono i conflitti risolti, aggiornando così la pull request. Per ulteriori informazioni su **git diff** e **git difftool**, consulta la documentazione di Git.
+ Nella console, è possibile scegliere **Resolve conflicts (Risolvi conflitti)**. Si apre un editor di testo normale che mostra i conflitti in modo analogo al comando **git diff**. È possibile rivedere manualmente i conflitti in ogni file che li contiene, apportare le modifiche e quindi aggiornare la richiesta con le modifiche apportate.
+ In AWS CLI, puoi usare il AWS CLI per ottenere informazioni sui conflitti di unione e creare un commit di unione senza riferimenti per testare un'unione. 

**Topics**
+ [Risolvi i conflitti in una pull request (console)](#how-to-resolve-conflict-pull-request-console)
+ [Risolvi i conflitti in una pull request ()AWS CLI](#how-to-resolve-conflict-pull-request-cli)

## Risolvi i conflitti in una pull request (console)
<a name="how-to-resolve-conflict-pull-request-console"></a>

È possibile utilizzare la CodeCommit console per risolvere i conflitti in una richiesta pull in un CodeCommit repository. 

1. Apri la CodeCommit console su [https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home).

1. In **Repositories (Repository)**, scegliere il nome del repository. 

1. Nel riquadro di navigazione, selezionare **Pull requests (Richieste pull)**.

1. Per impostazione predefinita, viene visualizzato l'elenco di tutte le richieste pull aperte. Scegliere la richiesta di pull aperta da unire ma questa contiene i conflitti.

1. Nella richiesta di pull, scegliere **Resolve conflicts (Risolvi conflitti)**. Questa opzione è disponibile solo se non ci sono conflitti che devono essere risolti prima che la richiesta di pull possa essere unita.  
![\[Una richiesta di pull indicante conflitti che devono essere risolti prima di poter essere uniti.\]](http://docs.aws.amazon.com/it_it/codecommit/latest/userguide/images/codecommit-pull-request-resolve-conflicts.png)

1. Si apre una finestra di risoluzione dei conflitti che mostra un elenco di tutti i file che presentano conflitti da risolvere. Scegliere ogni file nell'elenco per rivedere i conflitti e apportare le modifiche necessarie finché tutti i conflitti saranno stati risolti.  
![\[L'editor di risoluzione dei conflitti mostra un file con i conflitti che non sono stati ancora risolti.\]](http://docs.aws.amazon.com/it_it/codecommit/latest/userguide/images/codecommit-pull-request-resolve.png)
   + È possibile scegliere di utilizzare i contenuti del file di origine, i contenuti del file di destinazione oppure se il file non è un file binario, per modificare manualmente i contenuti di un file in modo che contenga solo le modifiche desiderate. I marker git diff standard vengono utilizzati per visualizzare i conflitti tra la destinazione (HEAD) e i rami di origine nel file.
   + Se un file è un file binario, un modulo secondario Git oppure se esiste un conflitto di nome file/cartella, è necessario scegliere di utilizzare il file di origine o il file di destinazione per risolvere i conflitti. Non è possibile visualizzare o modificare file binari nella console. CodeCommit 
   + In caso di conflitti tra le modalità di file, viene visualizzata l'opzione per risolvere tale conflitto scegliendo tra la modalità di file del file di origine e la modalità di file del file di destinazione. 
   + Se si decide di ignorare le modifiche per un file e ripristinarne lo stato in conflitto, scegliere **Reset file (Ripristina file)**. In questo modo sarà possibile risolvere i conflitti in modo diverso.

1. Se si è soddisfatti delle modifiche, scegliere **Update pull request (Aggiorna pull di richiesta)**.
**Nota**  
È necessario risolvere tutti i conflitti in tutti i file prima di aggiornare con successo la richiesta di pull con le modifiche apportate. 

1. La richiesta di pull viene aggiornata con le modifiche e può essere unita. Viene visualizzata la pagina di unione. È possibile scegliere di unire la richiesta di pull in questo momento oppure è possibile tornare all'elenco delle richieste di pull. 

## Risolvi i conflitti in una pull request ()AWS CLI
<a name="how-to-resolve-conflict-pull-request-cli"></a>

Per utilizzare AWS CLI i comandi con CodeCommit, installa AWS CLI. Per ulteriori informazioni, consulta [Guida di riferimento alla riga di comando](cmd-ref.md). 

Nessun AWS CLI comando consente di risolvere i conflitti in una richiesta pull e di unire tale richiesta. Tuttavia, è possibile utilizzare i comandi individuali per individuare i conflitti, tentare di risolverli e verificare se una richiesta di pull può essere unita. È possibile utilizzare:
+ **get-merge-options**, per conoscere quali opzioni di unione sono disponibili per una unione tra due specificatori di commit.
+ **get-merge-conflicts**, per restituire un elenco di file con conflitti di unione in un'unione tra due specificatori di commit.
+ **batch-describe-merge-conflicts**, per ottenere informazioni su tutti i conflitti di unione nei file in un'unione tra due commit utilizzando una strategia di unione specificata. 
+ **describe-merge-conflicts**, per ottenere informazioni dettagliate su conflitti di unione per un determinato file tra due commit utilizzando una strategia di unione specificata.
+ **create-unreferenced-merge-commit**, per testare il risultato dell'unione di due specificatori di commit utilizzando una strategia di unione specificata.

1. <a name="get-merge-options"></a>Per scoprire quali opzioni di unione sono disponibili per una fusione tra due specificatori di commit, eseguire il comando **get-merge-options**, specificando:
   + Uno specificatore di commit per l'origine dell'unione (con l'opzione **--source-commit-specifier**).
   + Uno specificatore di commit per la destinazione dell'unione (con l'opzione **--destination-commit-specifier**). 
   + Il nome del repository (con l'opzione **--repository-name**).
   + (Facoltativo) Una strategia di risoluzione dei conflitti da utilizzare (con l'opzione **--conflict-resolution-strategy**).
   + (Facoltativo) Il livello di dettaglio delle informazioni sui conflitti (con l'opzione **--conflict-detail-level**).

    Ad esempio, per determinare le strategie di unione disponibili per unire un ramo di origine denominato *bugfix-1234* con un ramo di destinazione denominato in un repository denominato: *main* *MyDemoRepo*

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

   Se il comando viene eseguito correttamente, verrà visualizzato un output simile al seguente:

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

1. <a name="get-merge-conflict"></a>Per ottenere un elenco dei file contenenti i conflitti di unione in un'unione tra due specificatori di commit, eseguire il comando **get-merge-conflicts**, specificando:
   + Uno specificatore di commit per l'origine dell'unione (con l'opzione **--source-commit-specifier**).
   + Uno specificatore di commit per la destinazione dell'unione (con l'opzione **--destination-commit-specifier**). 
   + Il nome del repository (con l'opzione **--repository-name**).
   + L'opzione di unione da utilizzare (con l'opzione **--merge-option**).
   + (Facoltativo) Il livello di dettaglio delle informazioni sui conflitti (con l'opzione **--conflict-detail-level**).
   + (Facoltativo) Una strategia di risoluzione dei conflitti da utilizzare (con l'opzione **--conflict-resolution-strategy**).
   + (Facoltativo) Il numero massimo di file con conflitti da restituire (con l'opzione **--max-conflict-files**).

   Ad esempio, per ottenere un elenco di file che contengono conflitti in seguito a un'unione tra un ramo di origine denominato feature-randomizationfeature e un ramo di destinazione denominato main, utilizza la strategia di unione a tre vie in un repository denominato: MyDemoRepo

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

   Se il comando viene eseguito correttamente, verrà visualizzato un output simile al seguente:

   ```
   {
       "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>Per ottenere informazioni sui conflitti di unione in tutti i file o in un sottoinsieme di file in una unione tra due specificatori di commit, eseguire il comando **batch-describe-merge-conflicts**, specificando:
   + Uno specificatore di commit per l'origine dell'unione (con l'opzione **--source-commit-specifier**).
   + Uno specificatore di commit per la destinazione dell'unione (con l'opzione **--destination-commit-specifier**). 
   + L'opzione di unione da utilizzare (con l'opzione **--merge-option**).
   + Il nome del repository (con l'opzione **--repository-name**).
   + (Facoltativo) Una strategia di risoluzione dei conflitti da utilizzare (con l'opzione **--conflict-resolution-strategy**).
   + (Facoltativo) Il livello di dettaglio delle informazioni sui conflitti (con l'opzione **--conflict-detail-level**).
   + (Facoltativo) Il numero massimo di hunk di unione da restituire (con l'opzione **--max-merge-hunks**).
   + (Facoltativo) Il numero massimo di file con conflitti da restituire (con l'opzione **--max-conflict-files**).
   + (Facoltativo) il percorso dei file di destinazione da utilizzare per descrivere i conflitti (con l'opzione **--file-paths**).

    Ad esempio, per determinare i conflitti di unione dovuti all'unione di un ramo di origine denominato *feature-randomizationfeature* con un ramo di destinazione denominato utilizzando la strategia in un repository denominato: *main* *THREE\$1WAY\$1MERGE* *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 il comando viene eseguito correttamente, verrà visualizzato un output simile al seguente:

   ```
   {
       "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>Per ottenere informazioni dettagliate su qualsiasi conflitto di unione per un determinato file in un'unione tra due specificatori di commit, eseguire il comando **describe-merge-conflicts**, specificando:
   + Uno specificatore di commit per l'origine dell'unione (con l'opzione **--source-commit-specifier**).
   + Uno specificatore di commit per la destinazione dell'unione (con l'opzione **--destination-commit-specifier**). 
   + L'opzione di unione da utilizzare (con l'opzione **--merge-option**).
   + Il percorso dei file di destinazione da utilizzare per descrivere i conflitti (con l'opzione **--file-path**).
   + Il nome del repository (con l'opzione **--repository-name**).
   + (Facoltativo) Una strategia di risoluzione dei conflitti da utilizzare (con l'opzione **--conflict-resolution-strategy**).
   + (Facoltativo) Il livello di dettaglio delle informazioni sui conflitti (con l'opzione **--conflict-detail-level**).
   + (Facoltativo) Il numero massimo di hunk di unione da restituire (con l'opzione **--max-merge-hunks**).
   + (Facoltativo) Il numero massimo di file con conflitti da restituire (con l'opzione **--max-conflict-files**).

   Ad esempio, per determinare i conflitti di unione per un file denominato *readme.md* in un ramo di origine denominato *feature-randomizationfeature* con un ramo di destinazione denominato *main* utilizzando la *THREE\$1WAY\$1MERGE* strategia in un repository denominato: *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 il comando viene eseguito correttamente, verrà visualizzato un output simile al seguente:

   ```
   {
       "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>Per creare un commit non referenziato che rappresenta il risultato dell'unione di due specificatori di commit, eseguire il comando **create-unreferenced-merge-commit**, specificando:
   + Uno specificatore di commit per l'origine dell'unione (con l'opzione **--source-commit-specifier**).
   + Uno specificatore di commit per la destinazione dell'unione (con l'opzione **--destination-commit-specifier**). 
   + L'opzione di unione da utilizzare (con l'opzione **--merge-option**).
   + Il nome del repository (con l'opzione **--repository-name**).
   + (Facoltativo) Una strategia di risoluzione dei conflitti da utilizzare (con l'opzione **--conflict-resolution-strategy**).
   + (Facoltativo) Il livello di dettaglio delle informazioni sui conflitti (con l'opzione **--conflict-detail-level**).
   + (Facoltativo) Il messaggio di commit da includere (con l'opzione **--commit-message**).
   + (Facoltativo) Il nome da utilizzare per il commit (con l'opzione **--name**).
   + (Facoltativo) L'indirizzo e-mail da utilizzare per il commit (con l'opzione **--email**).
   + (Facoltativo) Per mantenere le cartelle vuote (con l'opzione **--keep-empty-folders**).

    Ad esempio, per determinare i conflitti di unione per l'unione di un ramo di origine denominato *bugfix-1234* con un ramo di destinazione denominato *main* utilizzando la strategia ACCEPT\$1SOURCE in un repository denominato: *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 il comando viene eseguito correttamente, verrà visualizzato un output simile al seguente:

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