Esplorare i repository Git e confrontare i rami in Visual Studio

La finestra Modifiche Git offre un modo semplice per interagire con Git durante la codifica senza dover passare dal codice. In alcuni casi, tuttavia, è più opportuno concentrarsi sul repository Git. Ad esempio, potrebbe essere necessario ottenere una buona immagine di ciò che il team sta lavorando o forse confrontare due commit per analizzare un bug.

È possibile lavorare in remoto con il provider Git preferito, ad esempio GitHub o Azure DevOps.

Esplorare i rami locali e remoti

Per iniziare, aprire la finestra Repository Git selezionando Repository Git dal menu Visualizza (o usando il+ tasto di scelta rapida CTRL0, CTRL+R). È anche possibile accedere alla finestra Repository Git selezionando i collegamenti in uscita/in ingresso nella finestra Modifiche Git e sulla barra di stato.

Schermata della finestra del repository Git in Visual Studio con Branch o Tag e richieste di pull nel riquadro sinistro e i dettagli della richiesta di pull nel riquadro principale.

Screenshot che mostra l'anatomia della finestra Repository Git.

La finestra Repository Git contiene un pannello sinistro. Ciò che si seleziona qui determina il contenuto sul lato destro.

In Visual Studio il riquadro sinistro include Branches/Tags e Pull Requests.

La finestra Repository Git contiene tre sezioni principali, come numerato nello screenshot precedente:

Rami/tag: Git consente agli utenti di eseguire il multitasking e sperimentare il codice tramite rami. La diramazione in Git è utile in diversi scenari, in particolare quando si lavora su progetti complessi con più funzionalità o quando si collabora con un team. Con Visual Studio 17.13 e versioni successive è possibile visualizzare i tag nel repository e passare a qualsiasi tag. Il team può usare tag Git (ad esempio , v1.0), per contrassegnare i punti nella cronologia del repository e visualizzare lo stato del repository in quel momento nella cronologia. Vedere Git - Tagging.

Screenshot che mostra i tag Git nella finestra Repository Git.

Grafico: questa sezione visualizza lo stato del ramo. Include tre sottosezioni:

  • In ingresso vengono visualizzati i commit in ingresso che il team ha contribuito.
  • In uscita vengono visualizzati i commit locali che non sono ancora stati inseriti.
  • Cronologia locale mostra il resto dei commit rilevati dal repository locale.

Commit: per aprire questa sezione, selezionare qualsiasi commit nella sezione Graph . È possibile controllare le modifiche introdotte da un commit selezionandole, che mostra una differenza. Ad esempio, lo screenshot precedente mostra le modifiche introdotte da un commit nel file Resize.cs .

Rami/tag: Git consente agli utenti di eseguire il multitasking e sperimentare il codice tramite rami. La diramazione in Git è utile in diversi scenari, in particolare quando si lavora su progetti complessi con più funzionalità o quando si collabora con un team. È possibile visualizzare i tag nel repository e passare a qualsiasi tag. Il team può usare tag Git (ad esempio , v1.0), per contrassegnare i punti nella cronologia del repository e visualizzare lo stato del repository in quel momento nella cronologia. Vedere Git - Tagging.

Screenshot che mostra i tag Git nella finestra Repository Git.

Con rami/tag selezionati, vengono visualizzate le sezioni Graph e Commit sul lato destro.

Grafico: questa sezione visualizza lo stato del ramo. Include tre sottosezioni:

  • In ingresso vengono visualizzati i commit in ingresso che il team ha contribuito.
  • In uscita vengono visualizzati i commit locali che non sono ancora stati inseriti.
  • Cronologia locale mostra il resto dei commit rilevati dal repository locale.

Commit: per aprire questa sezione, selezionare qualsiasi commit nella sezione Graph . È possibile controllare le modifiche introdotte da un commit selezionandole, che mostra una differenza. Ad esempio, lo screenshot precedente mostra le modifiche introdotte da un commit nel file Resize.cs .

Visualizza i commit in dettaglio

I tasti di scelta rapida alt+su o alt+freccia giù consentono di spostarsi tra le sezioni nel pannello sinistro.

È possibile esplorare qualsiasi ramo locale o remoto senza dover cambiare ramo. Quando si trova un commit su cui si vuole concentrarsi, selezionare il pulsante Apri in nuova scheda per aprire il commit in una scheda diversa.

Screenshot di come aprire un commit in una nuova scheda.

Screenshot della scheda per i dettagli del commit.

Screenshot della scheda per i dettagli del commit.

Suggerimento

Per visualizzare il commit a schermo intero, scollegare la scheda Commit e ingrandire la finestra Commit usando il pulsante Ingrandisci . È anche possibile selezionare la configurazione diff preferita selezionando Configurazione diff (icona a forma di ingranaggio).

Screenshot dei dettagli del commit a schermo intero con configurazioni diff.

Suggerimento

Per visualizzare il commit a schermo intero, scollegare la scheda Commit e ingrandire la finestra Commit usando il pulsante Ingrandisci . È anche possibile selezionare la configurazione diff preferita selezionando Configurazione diff (icona a forma di ingranaggio).

Screenshot dei dettagli del commit a schermo intero con configurazioni diff.

Richieste di pull

Se stai esaminando rami e commit, passa a Pull Requests nel pannello sinistro.

La sezione Richieste pull mostra un elenco di richieste pull attive.

Sfogliare e aprire pull request

Selezionare una pull request per aprire una vista di revisione incorporata senza fare il checkout del branch. Trovare le richieste pull dalla finestra Git Repository (View>Git Repository), Git Changes, o Git>GitHub (o Azure DevOps) >View Pull Requests.

Screenshot dell'elenco delle richieste pull a sinistra e della panoramica della richiesta pull selezionata a destra con la descrizione e i file modificati.

  • Descrizione della richiesta pull, file modificati, commit, elementi correlati e revisori in un'unica visualizzazione.
  • Passa da una pull request attiva all'altra senza interferire con il branch di lavoro.
  • Visualizza i dettagli e le modifiche dei singoli commit nella pull request.

Commento e discussione

Lasciare il feedback direttamente nella visualizzazione diff e continuare la conversazione senza passare a un browser.

Screenshot di una differenza di file con un thread di commento della richiesta pull inline che include una risposta e un'azione di risoluzione.

  • Aggiungere commenti inline su righe specifiche, rispondere ai commenti e risolvere i thread.
  • Visualizzare gli indicatori di commento per ogni file nell'elenco Modifiche .
  • Eseguire il rendering di immagini inline e testo formattato nei commenti, in modo analogo all'esperienza Web.

Approvare, completare e unire

Quando siete pronti, approvate e completate la pull request in Visual Studio. Le azioni di votazione e completamento sono disponibili in più viste, così puoi approvare mentre rivedi le modifiche.

  • Approva la pull request. Altre opzioni di voto sono disponibili nell'elenco a discesa per Azure DevOps.
  • Visualizzare i controlli di stato, i conflitti di merge e le approvazioni necessarie nella scheda Panoramica.
  • Completare o eseguire il merge della pull request, con opzioni per convertirla in bozza e abbandonarla o chiuderla.

È possibile gestire questa esperienza in>Strumenti Opzioni>funzionalità di anteprima:

  • Commenti sulle Pull Request
  • Visualizzare le richieste pull per un repository Git

Per i flussi di lavoro dettagliati per commentare le richieste pull nei file e nelle visualizzazioni diff, vedere Creare una richiesta pull in Visual Studio.

Visualizzazione cronologia multi-ramo

Novità con la versione 17.7: quando si apre la finestra Repository Git, si inizia nella visualizzazione a ramo singolo. È quindi possibile selezionare qualsiasi branch per aggiungere sia il branch che i relativi commit a una vista cronologica multi-branch, che aggiunge segnali visivi rendendo più efficiente l'interazione con più branch.

Screenshot della cronologia ramificazione multipla in Visual Studio.

Sul lato sinistro della visualizzazione Cronologia locale è presente sia la colorazione delle linee che le etichette di ramo che semplificano la traccia dei commit appartenenti a ogni ramo. È possibile usare l'elenco dei rami nella parte superiore della tabella per scorrere più facilmente i rami e sapere immediatamente quali rami vengono visualizzati nel grafico.

Nella sezione Rami/Tag passare il puntatore del mouse su un ramo per visualizzare il pulsante Toggle Branch in History (l'icona è simile a un occhio). Utilizzando il pulsante al passaggio del mouse, è possibile selezionare i rami da mostrare nella visione cronologia dei commit.

È possibile usare i pulsanti della barra degli strumenti nella parte superiore della visualizzazione della cronologia dei commit per personalizzare la visualizzazione e filtrare le branche.

  • Mostra solo primo genitore: Limita la cronologia per visualizzare solo la cronologia del commit su una singola riga, anziché mostrare i rami laterali con la propria sequenza di commit.

  • Mostra rami locali: attiva o disattiva se visualizzare o meno le etichette per il ramo locale nella visualizzazione cronologia.

  • Mostra rami remoti: attiva/disattiva se visualizzare o meno le etichette per i rami remoti che contribuiscono alla cronologia di commit che stai visualizzando.

  • Mostra tag: attiva/disattiva se visualizzare o meno le etichette per i tag.

    Mostra rami locali, Mostra rami remoti e Mostra tag tutti fanno riferimento agli indicatori di etichetta sui commit visualizzati sul lato sinistro nella visualizzazione cronologia.

    Screenshot che mostra le etichette degli indicatori per rami e tag nella visualizzazione cronologia.

Novità con la versione 17.14: per concentrarsi sui commit non sincronizzati, è possibile usare il pulsante della barra degli strumenti Mostra solo in uscita/in ingresso per modificare la visualizzazione cronologia in modo da visualizzare solo i commit in uscita (non ancora inseriti dal ramo corrente) e i commit in ingresso (nuovo sul remoto).

Screenshot che mostra la finestra del repository Git con il pulsante della barra degli strumenti Mostra solo i cambiamenti in uscita/in ingresso.

È anche possibile selezionare Mostra solo in uscita/in ingresso nel menu di scelta rapida facendo clic con il pulsante destro del mouse in un punto qualsiasi della visualizzazione cronologia.

Confrontare i commit

Per confrontare due commit nel ramo, usare il tasto CTRL per selezionare i due commit da confrontare. Fare quindi clic con il pulsante destro del mouse su uno di essi e selezionare Confronta commit.

Screenshot di come confrontare due commit.

Screenshot di come confrontare due commit.

Screenshot dei commit confrontati.

Screenshot dei commit confrontati.

Suggerimento

Analogamente a Dettagli commit, è possibile usare il pulsante Apri in nuova scheda per aprire il confronto in una scheda diversa o ingrandirlo sullo schermo.

Rivedi il contenuto del commit con un riepilogo delle modifiche

In Git>View Branch History aprire qualsiasi commit e selezionare Apri riepilogo modifiche. Visual Studio mostra le righe modificate da più file in una visualizzazione unificata, utile per un passaggio rapido prima della revisione più approfondita dei file per file.

Schermata che mostra il riepilogo delle modifiche aperte nei dettagli del commit.

Creare un ramo da un commit

In Visual Studio è possibile usare il riquadro Git Graph nella finestra Repository Git per creare rami dai commit precedenti. A tale scopo, fare clic con il pulsante destro del mouse sul commit da cui si vuole creare un nuovo ramo e quindi scegliere Nuovo ramo.

Screenshot del riquadro Git Graph della finestra Repository Git.

Screenshot del riquadro Git Graph della finestra Repository Git.

Annotazioni

Il comando equivalente per questa azione è git branch <branchname> [<commit-id>].

Confrontare i rami

Il confronto dei rami offre una panoramica delle differenze tra due rami, che possono essere utili prima di creare una richiesta pull, unirsi o persino eliminare un ramo.

Diagramma che illustra come Git confronta i rami.

Per confrontare il ramo attualmente estratto con altri rami usando Visual Studio, è possibile utilizzare lo strumento di selezione dei rami disponibile nella barra di stato e la finestra delle modifiche di Git per scegliere qualsiasi ramo locale o remoto da confrontare. Fare clic con il pulsante destro del mouse sul ramo di destinazione e scegliere Confronta con Current Branch. In alternativa, è possibile usare l'elenco di rami nella finestra Repository Git per accedere allo stesso comando.

Animazione che mostra i punti di ingresso di confronto dei rami.

Selezionando Confronta con Current Branch si apre l'esperienza di confronto dei rami in cui è possibile esplorare l'elenco Modifiche e selezionare il file da confrontare.

Screenshot che mostra come confrontare i rami usando la visualizzazione diff.

Screenshot che mostra come confrontare i rami usando la visualizzazione diff.

Suggerimento

Se si preferisce un diff in linea, è possibile utilizzare l'icona a forma di ingranaggio delle Opzioni di configurazione del diff e passare a una visualizzazione del diff in linea. Screenshot che mostra le opzioni di configurazione Diff disponibili per te.

Eseguire il checkout dei commit

Verificare un commit può essere utile in diversi modi. Ad esempio, consente di tornare a un punto precedente nella cronologia del repository in cui è possibile eseguire o testare il codice. Può anche essere utile se si vuole esaminare il codice da un ramo remoto ,ad esempio il ramo di un collega. In questo modo non è necessario creare un ramo locale se non si prevede di contribuire a tale ramo. In questo caso, è sufficiente controllare il suggerimento del ramo remoto che si vuole esaminare.

Diagramma che illustra il processo di commit dell'estrazione git.

Per estrarre un commit precedente in Visual Studio, aprire la finestra Repository Git , fare clic con il pulsante destro del mouse sul commit a cui si vuole tornare e selezionare Checkout (–detach). Visual Studio mostra una finestra di dialogo di conferma che spiega che effettuando il checkout di un commit, ci si trova in uno stato HEAD scollegato. Ciò significa che il HEAD del tuo repository punterà direttamente a un commit anziché a un ramo.

Animazione che mostra i punti di ingresso del commit di checkout.

Ora che sei in uno stato di head separata, puoi eseguire e testare il tuo codice o persino esplorare ed effettuare il commit delle modifiche. Al termine dell'esplorazione e si vuole tornare al ramo, è possibile scegliere di eliminare le modifiche controllando un ramo esistente o scegliendo di mantenere le modifiche creando prima un nuovo ramo .

Importante

I commit creati in uno stato head scollegato non sono associati ad alcun ramo e possono essere sottoposto a Garbage Collection da Git dopo aver estratto un ramo. Ecco perché, per mantenere le modifiche, è consigliabile creare un nuovo ramo prima di passare a un altro ramo. Ad esempio, i commit C5 e C6 verranno eliminati se si estrae Main senza creare un nuovo ramo. Diagramma che illustra i commit head scollegati in Git.

Per ulteriori informazioni sullo stato di Detached Head, vedere la documentazione di Git.

Controllare il suggerimento di un ramo remoto può essere utile se si vuole esaminare rapidamente una richiesta pull e valutare gli aggiornamenti più recenti. A tale scopo in Visual Studio, assicurarsi prima di tutto di recuperare e ottenere gli aggiornamenti più recenti dal repository remoto. Fare quindi clic con il pulsante destro del mouse sul ramo remoto che si vuole esaminare e selezionare Commit suggerimento di estrazione.

Screenshot che mostra l'opzione Checkout Tip Commit.

Screenshot che mostra l'opzione Checkout Tip Commit.

Visualizzare la cronologia delle modifiche line-by-line con Git Blame

Git Blame mostra chi ha modificato ogni riga di codice in un file, insieme a quando e perché è stata apportata la modifica. Questa funzionalità è utile quando è necessario comprendere la cronologia e il contesto dietro modifiche di codice specifiche, tenere traccia dell'origine di un bug o identificare l'autore di una particolare implementazione.

Accedere alle annotazioni di Git Blame

È possibile visualizzare le annotazioni Git Blame direttamente dall'editor di codice o da Esplora soluzioni.

Dall'editor di codice:

  1. Aprire un file nell'editor.
  2. Fare clic con il pulsante destro del mouse in un punto qualsiasi dell'editor di codice.
  3. Selezionare Git>Blame (Annotate).

From Esplora soluzioni:

  1. Fare clic con il pulsante destro del mouse su un file in Esplora soluzioni.
  2. Selezionare Git>Blame (Annotate).

Le annotazioni della colpa vengono visualizzate nel margine sinistro dell'editor, con il nome dell'autore, la data di commit e il collegamento di commit. Il file si apre nell'editor con le annotazioni Blame visibili.

Esplora i dettagli del commit dalle annotazioni Blame

Quando le annotazioni Di colpa sono visibili nell'editor, è possibile interagire con esse per ottenere altre informazioni:

  • Fare clic sul commit per Visualizzare i dettagli: è possibile visualizzare il commit completo, in cui è possibile visualizzare tutti i file modificati in tale commit e accedere ad altre opzioni, ad esempio confrontando la versione corrente con la versione precedente.

Suggerimento

Git Blame è più utile per comprendere il comportamento imprevisto o tenere traccia del motivo per cui è stata apportata una particolare modifica.

Quando Git Blame non è disponibile

Git Blame è disponibile solo per i file rilevati di cui è stato eseguito il commit nel repository Git. Se l'opzione Git>Blame non viene visualizzata, controllare la tabella seguente per individuare le cause e le soluzioni comuni.

Scenario Solution
Il file non viene rilevato Controllare la finestra Modifiche Git . Se il file compare in File non tracciati, prima esegui lo staging e il commit del file.
Il file è in .gitignore Rimuovere il file da .gitignore, aggiungerlo al repository ed eseguirne il commit.
File binario Blame funziona solo con file di testo quali il codice sorgente (.cs, .js, .py), i file di configurazione (.json, .xml) e la documentazione (.md, .txt). Per i file binari (.dll, .exe, immagini), usa invece Git>View History.
Nessuna cronologia di commit Eseguire almeno un commit che includa il file.
Stato HEAD scollegato Controllare la barra di stato. Se è in stato detached, eseguire il checkout di un branch dalla finestra Git Repository. Vedi Commit checkout.
File molto grande Per motivi di prestazioni, Blame può essere disabilitato per file estremamente grandi. Usa Git>Visualizza cronologia invece.

Alternativa per tutti gli scenari: Fare clic con il pulsante destro del mouse sul file e selezionare Git>Visualizza cronologia per vedere tutti i commit che hanno modificato il file.