Condividi tramite


Risoluzione dei conflitti

Si verifica un conflitto quando vengono apportate modifiche allo stesso elemento sia nell'area di lavoro che nel repository Git remoto. Quando si verifica un conflitto, lo stato Git indica Conflitto e la funzione Commit è disabilitata.

Screenshot di un report con uno stato Git che indica un conflitto.

Quando si seleziona Aggiorna in caso di conflitti, un messaggio informa che è necessario risolvere i conflitti prima di poter effettuare l'aggiornamento.

Screenshot del messaggio di errore nella scheda Controllo del codice sorgente che informa sui conflitti.

Vi sono tre modi per risolvere un conflitto:

Risolvere il conflitto nell'interfaccia utente

Selezionare Aggiorna tutto per visualizzare un elenco di tutti gli elementi con conflitti. È quindi possibile selezionare la versione da mantenere per ogni elemento. Per ogni elemento in conflitto, è possibile scegliere di accettare le modifiche in arrivo dal repository Git o mantenere la versione corrente presente nell'area di lavoro.

Screenshot dell'interfaccia utente per selezionare la versione di un elemento in conflitto da mantenere.

  • Scegliere Accetta modifiche in arrivo per eseguire la sostituzione delle modifiche nell'area di lavoro. Le modifiche dell'area di lavoro andranno perse e lo stato Git cambierà a Sincronizzato se l'importazione ha esito positivo.

  • Scegliere Mantieni contenuto corrente per mantenere la versione attualmente presente nell'area di lavoro. Al termine dell'aggiornamento, lo stato Git diventa Modifiche non sottoposte a commit, poiché le modifiche nell'area di lavoro non sono ancora state sottoposte a commit nel ramo.

Ripristinare a uno stato precedente

È possibile ripristinare l'intera area di lavoro o il ramo Git all'ultimo stato sincronizzato. Se si ripristina il ramo Git a un commit precedente, è comunque possibile vedere le modifiche apportate al ramo non sincronizzato. Se si ripristina l'area di lavoro, si perdono tutte le modifiche apportate all'area di lavoro dopo l'ultimo commit.

Per ripristinare lo stato sincronizzato precedente, eseguire una delle azioni seguenti:

  • Usare il comando Annulla per riportare gli elementi in conflitto nell'area di lavoro all'ultimo stato sincronizzato.
  • Ripristinare l'ultimo stato sincronizzato in Git usando il comando git revert in Azure DevOps.

È anche possibile risolvere i conflitti disconnettendo e riconnettendo l'area di lavoro. In caso di riconnessione, selezionare la direzione della sincronizzazione. Si noti, tuttavia, che quando ci si riconnette, tutti gli elementi nell'area di lavoro o nel ramo vengono sovrascritti, non solo quelli in conflitto. Non riporta l'area di lavoro o il ramo all'ultimo stato sincronizzato. Invece, viene sovrascritto tutto il contenuto in un'unica posizione con il contenuto dell'altro.

Risolvere il conflitto in Git

Se non si è certi delle modifiche apportate e della versione da scegliere, e non si vuole ripristinare a uno stato precedente, è possibile provare a risolvere il conflitto nel repository Git creando un nuovo ramo, risolvendo il conflitto in tale ramo e sincronizzandolo con quello corrente.

Nota

Solo un amministratore dell'area di lavoro può riconnettere l'area di lavoro al nuovo ramo.

  1. Dal pannello di controllo del codice sorgente, controllare un nuovo ramo usando l'ultimo ID di ramo sincronizzato mostrato nella parte inferiore della schermata

    Screenshot che mostra come controllare un nuovo ramo dal pannello di controllo del codice sorgente selezionando la freccia giù.

    Screenshot delle informazioni sull'ID di ramo mostrate nella parte inferiore della schermata.

    Questo passaggio crea un nuovo ramo dal ramo in conflitto usando l'ultimo stato Git sincronizzato, prima che siano state apportate modifiche in conflitto con tali modifiche. È possibile visualizzare le modifiche nel pannello di controllo del codice sorgente, ma non è necessario eseguire l'aggiornamento dal ramo Git. L'opzione Checkout ramo mantiene lo stato corrente dell'area di lavoro, quindi le modifiche non sottoposte a commit vengono mantenute durante la modifica del ramo.

  2. Eseguire il commit delle modifiche nel nuovo ramo. Questo nuovo ramo include ora le modifiche apportate agli elementi connessi a una versione precedente del ramo Git che non è in conflitto con le modifiche apportate.

  3. In Git, risolvere i conflitti tra il ramo originale e il nuovo ramo.

  4. In Git, unire il nuovo ramo al ramo originale

  5. In Fabric, riportare l'area di lavoro al ramo originale