Risolvere i conflitti di unione in Visual Studio

Quando si unisce un ramo a un altro, le modifiche apportate ai file dai commit in un ramo possono essere in conflitto con le modifiche nell'altra. Git tenta di risolvere queste modifiche usando la cronologia nel repository per determinare l'aspetto dei file uniti. Quando non è chiaro come unire le modifiche, Git interrompe l'unione e indica quali file sono in conflitto.

Impedire conflitti di unione

Git è utile per unire automaticamente le modifiche ai file nella maggior parte dei casi, purché il contenuto del file non cambi notevolmente tra i commit. Se il ramo è lontano dal ramo principale, è consigliabile ribasare i rami prima di aprire una richiesta pull. I rami ribasati verranno uniti nel ramo principale senza conflitti.

Risolvere i conflitti di unione

  • Se si collabora con altri utenti nello stesso ramo, è possibile che vengano visualizzati conflitti di unione quando si esegue il push delle modifiche.

    Screenshot del conflitto di merge dopo un push.

  • Visual Studio rileva se il ramo locale su cui si sta lavorando si trova dietro il ramo di rilevamento remoto e offre opzioni tra cui scegliere.

    Screenshot delle opzioni disponibili quando il ramo locale si trova dietro il ramo remoto.

    Nota

    Se il repository remoto supporta Force Push, è possibile abilitarlo usando Git> Impostazioni.

    In questo esempio selezionare Pull e quindi Push per includere le modifiche introdotte nel repository remoto. Se si verificano conflitti di unione quando si eseguono il pull delle modifiche o si tenta di unire due rami, Visual Studio informa l'utente nella finestra Modifiche Git, nella finestra Repository Git e in tutti i file con conflitti.

    Screenshot di una notifica di conflitto di merge.

  • La finestra Modifiche Git mostra un elenco di file con conflitti in Modifiche non salvate. Per iniziare a risolvere i conflitti, fare doppio clic su un file. In alternativa, se si dispone di un file con conflitti aperti nell'editor, è possibile selezionare Apri editor unione.

    Screenshot dello stato dei conflitti di unione nella finestra Modifiche Git.

  • Nell'editor di merge iniziare a risolvere il conflitto usando uno dei metodi seguenti (come illustrato nello screenshot numerato):

    1. Passare alla riga dei conflitti per riga e scegliere tra mantenere il lato destro o sinistro selezionando le caselle di controllo.

      - oppure -

    2. Selezionare il pulsante Take Incoming (o premere F10) per accettare tutte le modifiche in ingresso oppure il pulsante Take Current (o premere F11) per mantenere la versione corrente di tutte le modifiche in conflitto. È possibile eseguire la stessa operazione selezionando una delle caselle di controllo nella parte superiore di una cornice affiancata.

      - oppure -

    3. Modificare manualmente il codice nella finestra Risultato .

    Screenshot che mostra come risolvere un conflitto di merge in Visual Studio 2022.

    Suggerimento

    Se non ti piace il layout predefinito in Editor unione, puoi modificarlo usando il menu a discesa a forma di ingranaggio.

    Screenshot delle opzioni di layout dell'editor di merge.

    Ad esempio, lo screenshot seguente mostra l'aspetto della visualizzazione verticale:

    Screenshot della visualizzazione verticale nell'interfaccia utente dell'editor di merge.

  • Al termine della risoluzione dei conflitti di merge, selezionare Accetta unione. Ripetere questo processo per tutti i file in conflitto.

    Screenshot dell'azione Accetta unione in Visual Studio 2022.

  • Usare la finestra Modifiche Git per creare un commit di merge e risolvere il conflitto.

    Screenshot di come creare un commit di merge usando la finestra Modifiche Git.

    Nota

    Se si desidera mantenere tutte le modifiche apportate a un file, è possibile fare clic con il pulsante destro del mouse nella sezione Modifiche non salvate e selezionare Mantieni corrente (locale) senza dover aprire l'editor di merge.

    Screenshot dell'opzione di menu Mantieni corrente.

Suggerimento

Per altre informazioni sulle opzioni di accessibilità disponibili, vedere la sezione Scelte rapide da tastiera Git della pagina Suggerimenti per l'accessibilità e consigli per Visual Studio .

Configurare lo strumento diff

Se si imposta il .gitconfig file per l'uso di uno strumento diff di terze parti, ad esempio BeyondCompare o KDiff3, Visual Studio lo rispetta. Ogni volta che Visual Studio visualizza normalmente un diff, viene aperta una finestra separata nello strumento preferito. Per un esempio, vedere questa domanda stackOverflow .