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.
Quando si seleziona Aggiorna in caso di conflitti, un messaggio informa che è necessario risolvere i conflitti prima di poter effettuare l'aggiornamento.
Vi sono tre modi per risolvere un conflitto:
- Selezionare la versione da mantenere nell'interfaccia utente.
- Ripristinare l'area di lavoro o il repository Git a uno stato sincronizzato precedente.
- Risolvere il conflitto in Git.
- Aggiorna manualmente l'area di lavoro se uno o più elementi non vengono aggiornati.
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.
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.
Dal pannello di controllo del codice sorgente, controllare un nuovo ramo usando l'ultimo ID di ramo sincronizzato mostrato 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.
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.
In Git, risolvere i conflitti tra il ramo originale e il nuovo ramo.
In Git, unire il nuovo ramo al ramo originale
In Fabric, riportare l'area di lavoro al ramo originale