Risolvere i conflitti di controllo della versione di Team Foundation

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Un vantaggio dell'uso di controllo della versione di Team Foundation (TFVC) per gestire i file è che diverse persone possono lavorare simultaneamente in un file. Uno svantaggio è che a volte è necessario risolvere i conflitti prima di poter ottenere, archiviare, rimuovere, unire o eseguire il rollback dei file.

Anche se può essere frustrante incontrare conflitti, il sistema fornisce informazioni e strumenti per comprendere e risolvere i conflitti.

È anche possibile risolvere i conflitti dalla riga di comando usando il comando Risolvi.

Suggerimento

Se il team deve collaborare per risolvere un numero elevato di conflitti, ad esempio dopo un'operazione di merge in una codebase di grandi dimensioni, potrebbe essere utile un'area di lavoro pubblica in un computer di sviluppo condiviso. Per altre informazioni, vedere Creare e usare le aree di lavoro.

Risolvere i conflitti

È possibile usare la finestra Risolvi conflitti di Visual Studio per risolvere i conflitti che bloccano l'utente. Per aprire la finestra, selezionare Azioni>Risolvi conflitti nella pagina Modifiche in sospeso di Team Explorer.

Screenshot dell'uso della finestra Risolvi conflitti per risolvere i conflitti.

Per impostazione predefinita, la finestra mostra solo i conflitti causati dall'operazione più recente tentata. Quando la finestra è in questo stato, viene visualizzato un messaggio che inizia: Filtro percorso applicato. Per visualizzare tutti i conflitti nell'area di lavoro, scegliere Recupera tutti i conflitti. Viene visualizzato un messaggio che inizia con: <N> Conflitti .

Se è trascorso molto tempo dopo aver apportato modifiche ai file nell'area di lavoro, potrebbero essersi verificati nuovi conflitti. Per aggiornare la finestra Risolvi conflitti , scegliere Aggiorna.

Screenshot che mostra la finestra Risolvi conflitti.

Ogni conflitto contiene informazioni e talvolta collegamenti che possono essere utili per risolverli. Per ottenere altre informazioni, è possibile selezionare il conflitto e scegliere una delle opzioni seguenti:

  • Icona Cronologia.Cronologia per visualizzare la cronologia del file. Se l'operazione che ha causato il conflitto è un'unione o un rollback, è possibile scegliere il controllo menu a destra di Cronologia e quindi selezionare Cronologia origine o Cronologia destinazione. Per altre informazioni, vedere Ottenere la cronologia di un elemento.

  • Icona Di confronto.Confrontare o selezionare la freccia a discesa accanto all'icona e quindi scegliere un comando. Verrà visualizzata la finestra Diff.

  • Icona Annotate.Annotare per visualizzare i dettagli su tutte le modifiche apportate alla versione più recente del file, tra cui chi ha apportato ogni modifica e quando è stata apportata. Vedere Visualizzare le modifiche dei file usando annotazioni.

Risolvere automaticamente tutti i conflitti

Per impostazione predefinita, il sistema tenta automaticamente di risolvere automaticamente tutti i conflitti, a meno che non si disattiva questa opzione. Per disattivare il salvataggio automatico automatico di Tutti, scegliere Opzioni strumenti>. Nella finestra di dialogo Opzioni, in Controllo del codice>sorgente visual Studio Team Foundation Server deselezionare Tenta di risolvere automaticamente i conflitti quando vengono generati.

È anche possibile scegliere manualmente AutoResolve All (Risolvi tutti) nella finestra Risolvi conflitti e quindi selezionare una delle opzioni seguenti:

  • Tutti i tipi di conflitto se si desidera che il sistema tenti di risolvere automaticamente i conflitti usando tutte le relative euristiche.

  • Tipi di conflitto specifici se si desidera che il sistema tenti di risolvere i conflitti, ma si vuole escludere alcune euristiche.

    Viene visualizzata la finestra di dialogo Scegli conflitti da risolvere . Selezionare o deselezionare le opzioni che si desidera abilitare o disabilitare e quindi scegliere Risoluzione automatica.

    Il sistema tenta di risolvere automaticamente i conflitti visualizzati nella finestra Modifiche in sospeso. Eventuali conflitti che il sistema non riesce a risolvere rimangono nella finestra. È necessario risolvere manualmente questi conflitti.

Informazioni sulle opzioni automatiche

È possibile limitare i tipi di conflitti risolti automaticamente dall'opzione AutoResolve All . Quando si sceglie AutoResolve All e quindi si seleziona Tipi di conflitto specifici, viene visualizzata la finestra di dialogo Scegli conflitti da risolvere .

Screenshot che mostra la finestra di dialogo Scegli conflitti da risolvere.

Causa del conflitto

Esempio

Selezione casella di controllo


Le modifiche al contenuto non in conflitto sono state apportate in ogni versione di un file.

Nella versione del file a sinistra è stato aggiunto uno zero all'inizio. Nel file a destra è stato aggiunto un terzo alla fine:

Screenshot delle modifiche al contenuto non in conflitto.

Conflitti con eventuali modifiche al contenuto

Le modifiche al contenuto sono state apportate durante un'operazione di recupero o archiviazione univoche per l'area di lavoro o durante un'operazione di merge o rollback univoche per la versione di destinazione.

Le voci quattro e cinque sono state aggiunte all'area di lavoro o alla versione di destinazione:

Screenshot delle modifiche al contenuto univoco per l'area di lavoro o la destinazione.

Conflitti con le modifiche apportate al contenuto solo nell'area di lavoro locale o nel ramo di destinazione

Le modifiche al contenuto sono state apportate durante l'operazione get o checkin univoche per il server o durante un'operazione di merge o rollback univoche per la versione di origine.

Le voci quattro e cinque sono state aggiunte al server o alla versione di origine:

Screenshot delle modifiche al contenuto univoco per il server o l'origine.

Conflitti con le modifiche apportate al contenuto solo nella versione del server o nel ramo di origine

Un file è stato rinominato nel server durante un'operazione di recupero o archiviazione o nel ramo di origine durante un'operazione di merge o rollback.

È stato estratto un file denominato launch.cs e si è lavorato su di esso. Durante tale periodo, un altro utente ha archiviato un insieme di modifiche che ha interessato lo stesso file. Tale insieme di modifiche non ha modificato il contenuto del file, ma ha modificato il nome del file in start.cs.

Conflitti causati dalla ridenominazione del file nella versione del server o nel ramo di origine

Sono state apportate modifiche comuni al contenuto che hanno generato contenuto identico in ogni versione. In alternativa, è stato modificato un file, archiviato tramite una compilazione di archiviazione controllata ed è stata selezionata l'opzione Mantieni le modifiche in sospeso in locale .

Le modifiche apportate a ogni versione hanno restituito contenuto di file identico. Le modifiche possono essere apportate al contenuto nei file, come illustrato nell'esempio seguente:

Screenshot che mostra modifiche identiche al contenuto in entrambe le versioni.

Conflitti causati da modifiche identiche nel server e nell'area di lavoro

Questa opzione risolve anche i conflitti causati da tutte le altre operazioni, ad esempio rinominare, eliminare, annullare l'eliminazione e il ramo, che comportano file identici.

Suggerimento

Se si seleziona questa casella di controllo, quando si procede, il sistema risolve queste modifiche scaricando la versione del server nell'area di lavoro.

Salvataggio automatico dei conflitti selezionati

Per provare a risolvere i conflitti selezionati usando tutte le opzioni di salvataggio automatico precedenti, selezionare uno o più conflitti e quindi scegliere AutoMerge.

Suggerimento

È possibile tenere premuto CTRL o MAIUSC per selezionare più conflitti.

Nota

Se AutoMerge è disabilitato, è necessario risolvere manualmente i conflitti.

Risolvere manualmente i conflitti selezionati

Se il sistema non riesce a risolvere automaticamente un conflitto o se si vuole assicurarsi di comprendere le modifiche, è necessario risolvere manualmente il conflitto. All'interno di ogni conflitto, il sistema visualizza le azioni che è possibile eseguire per risolvere il conflitto. Le azioni visualizzate dipendono dal tipo di conflitto e dall'operazione che ha causato il conflitto.

Usare la finestra Merge

Quando le modifiche al contenuto in conflitto causano un conflitto, è possibile scegliere Merge Changes in Merge Tool .When conflicting content changes cause a conflict conflict, you can choose Merge Changes in Merge Tool. Verrà visualizzata la finestra Merge .

Screenshot che mostra le modifiche di merge nello strumento di unione.

Nella finestra Merge è possibile:

  • Selezionare il layout della finestra: Visualizzazione verticale, Visualizzazione orizzontale o Visualizzazione mista.
  • Spostarsi tra le differenze e i conflitti.
  • Selezionare gli elementi nelle versioni a sinistra e a destra del file per includerle nei risultati.
  • Digitare più contenuto nel file nel riquadro Risultato .
  • Visualizzare la cronologia del file. Per altre informazioni, vedere Ottenere la cronologia di un elemento.
  • Confrontare le versioni del file.
  • Annotare il file per vedere chi ha modificato cosa. Per altre informazioni, vedere Visualizzare le modifiche dei file tramite annotazioni.

Quando si è soddisfatti del contenuto del riquadro Risultati , scegliere Accetta unione.

Il risultato della risoluzione del conflitto viene visualizzato nel riquadro Risultati .