Gestire i repository Git in Visual Studio

La finestra Repository Git offre un'esperienza Git a schermo intero che consente di gestire il repository Git e di rimanere aggiornati con i progetti del team. Ad esempio, potrebbe essere necessario reimpostare, ripristinare o rimuovere i commit di cherry-pick o semplicemente pulire la cronologia dei commit. La finestra Repository Git è anche ideale per visualizzare e gestire i rami.

Il controllo della versione con Visual Studio è facile con Git. È anche possibile lavorare in remoto con il provider Git preferito, ad esempio GitHub o Azure DevOps. In alternativa, è possibile lavorare in locale senza provider.

Aprire la finestra Repository Git

Per aprire la finestra Repository Git, scegliere Visualizza>repository Git (o premere CTRL 0, CTRL++R) oppure premere CTRL+Q e in Funzionalità cercare repository Git.

Modificare l'ultimo commit (modifica)

L'aggiornamento dell'ultimo commit viene chiamato modifica in Git ed è un caso d'uso comune. In alcuni casi è sufficiente aggiornare il messaggio di commit oppure potrebbe essere necessario includere una modifica dell'ultimo minuto.

È possibile modificare un commit nella riga di comando usando il comando seguente:

git commit --amend

La finestra Repository Git semplifica l'aggiornamento del messaggio di commit più recente. Aprire i dettagli del commit dell'ultimo commit facendo doppio clic su di esso e quindi selezionare l'opzione Modifica accanto al messaggio di commit.

Screenshot della modifica di un messaggio di commit.

Al termine della modifica del messaggio di commit, selezionare Modifica.

Screenshot del salvataggio di un messaggio modificato selezionando Modifica.

Se è necessario includere le modifiche del codice all'ultimo commit, è possibile farlo nella finestra Modifiche Git. Selezionare la casella di controllo Modifica e quindi eseguire il commit delle modifiche.

Screenshot delle modifiche apportate al codice tramite la finestra Modifiche Git.

Per altre informazioni su come modificare i messaggi di commit diversi da quello più recente, vedere Git Tools - Rewriting History (Strumenti Git - Cronologia riscrittura) nel sito Web Git.

Eseguire il merge dei commit (squash)

Per unire una serie di commit, Git offre un'opzione per schiacciare i commit in un singolo commit. Questa opzione può essere utile se si effettuano commit frequenti e si verifica un lungo elenco di commit da pulire prima di eseguire il push in un repository remoto.

È possibile schiacciare due commit nella riga di comando usando il comando seguente:

git rebase -i HEAD~2

Aggiornare pick quindi in squash, salvare e aggiornare il messaggio di commit.

Screenshot dell'aggiornamento di pick to squash.

Per unire i commit in Visual Studio, usare il tasto CTRL per selezionare più commit da unire. Fare quindi clic con il pulsante destro del mouse e selezionare Commit di squash. Visual Studio combina automaticamente i messaggi di commit, ma a volte è preferibile fornire un messaggio aggiornato. Dopo aver esaminato e aggiornato il messaggio di commit, selezionare il pulsante Squash .

Screenshot del commit di squash in Visual Studio.

Per altre informazioni sullo squashing, vedere Git Tools - Rewriting History (Strumenti Git - Cronologia riscrittura) nel sito Web Git.

Unire e ribasere i rami

Se si usano rami Git per lavorare su funzionalità diverse, è necessario includere gli aggiornamenti introdotti in altri rami. Questo problema può verificarsi mentre si sta ancora lavorando al ramo di funzionalità. Può verificarsi anche quando si lavora sul ramo di funzionalità ed è necessario mantenere le modifiche aggiungendole a un ramo diverso. In Git è possibile includere questi aggiornamenti unendo o ribasando i rami.

Nota

Le istruzioni seguenti usano New_Feature come nome di esempio per un ramo di funzionalità. Sostituirlo con il nome del proprio ramo.

Per unire il ramo principale nel ramo di funzionalità nella riga di comando, usare i comandi seguenti:

git checkout New_Feature
git merge main

Per eseguire la stessa operazione in Visual Studio, vedere il ramo delle funzionalità facendo doppio clic sull'elenco dei rami. Fare quindi clic con il pulsante destro del mouse su main e scegliere Unisci 'main' in 'New_Feature'.

Screenshot dell'unione di rami in Visual Studio.

Per eseguire nuovamente il database principale nel ramo di funzionalità nella riga di comando, usare i comandi seguenti:

git checkout New_Feature
git rebase main

Per eseguire la stessa operazione in Visual Studio, vedere il ramo delle funzionalità facendo doppio clic sull'elenco dei rami. Fare quindi clic con il pulsante destro del mouse su main e selezionare Rebase 'New_Feature' in 'main'.

Screenshot del ribasing dei rami in Visual Studio.

Per altre informazioni sull'unione, la ribasatura e la diramazione in generale, vedere Git Branching nel sito Web Git.

Copia commit (cherry-pick)

Copiare i commit da un ramo a un altro usando l'opzione cherry-pick. A differenza di un merge o di una ribase, cherry-pick apporta solo le modifiche dai commit selezionati, anziché tutte le modifiche in un ramo. Cherry-pick è un ottimo modo per affrontare questi problemi comuni:

  • Commit accidentale nel ramo errato. Cherry-pick le modifiche nel ramo corretto e quindi reimpostare il ramo originale sul commit precedente.
  • Eseguire il pull di un set di commit eseguiti in un ramo di funzionalità, in modo da eseguirne il merge prima nel ramo principale.
  • Conversione in commit specifici dal ramo main senza ribasare il ramo.

Per copiare le modifiche da un commit a Current Branch usando la riga di comando, usare il comando seguente:

git cherry-pick 7599e530

Per eseguire la stessa operazione in Visual Studio, visualizzare in anteprima il ramo da cui si vuole selezionare un commit selezionandolo con un solo clic. Fare quindi clic con il pulsante destro del mouse sul commit di destinazione e scegliere Cherry-Pick.

Screenshot del cherry-pick in Visual Studio.

Al termine dell'operazione, Visual Studio visualizza un messaggio di operazione riuscita. Il commit selezionato viene visualizzato nella sezione In uscita .

Per altre informazioni sui commit di cherry-pick, vedere la pagina Web Git per il comando cherry-pick.

Annulla modifiche

Usare il comando revert per annullare le modifiche apportate nei commit inseriti nei rami condivisi. Il comando di ripristino crea un nuovo commit che annulla le modifiche apportate a un commit precedente. Il comando revert non riscrive la cronologia del repository, che rende più sicuro usarlo quando si lavora con altri utenti.

Per ripristinare le modifiche apportate in un commit tramite la riga di comando, usare i comandi seguenti. Sostituire l'ID di esempio con l'ID di un commit reale nel ramo.

git revert 53333305
git commit

Nell'esempio precedente, i comandi annullano le modifiche apportate nel commit 53333305 e creano un nuovo commit nel ramo. Il commit originale è ancora presente nella cronologia Git. Per eseguire la stessa operazione in Visual Studio, fare clic con il pulsante destro del mouse sul commit da ripristinare e quindi scegliere Ripristina. Dopo aver verificato che l'azione e l'operazione è stata completata, Visual Studio visualizza un messaggio di operazione riuscita e viene visualizzato un nuovo commit nella sezione In uscita .

Screenshot del ripristino in Visual Studio.

Selezionare il nuovo commit per confermare che annulla le modifiche del commit ripristinato.

Screenshot della conferma di un'operazione di ripristino.

Per altre informazioni sul ripristino delle modifiche, vedere la pagina Web Git per il comando di ripristino.

Reimpostare uno stato precedente di un ramo

Usare il comando reset per riportare un ramo nel repository locale al contenuto di un commit precedente. Questa azione elimina tutte le modifiche apportate dopo il commit a cui si sta reimpostando il ramo.

Avviso

Non reimpostare i rami condivisi, perché è possibile eliminare il lavoro di altre persone. Usare invece il comando revert.

Per reimpostare uno stato precedente di un ramo usando la riga di comando, usare il comando seguente. Sostituire l'ID di esempio con l'ID di un commit reale nel ramo.

git reset --hard 53333305

La --hard parte del comando indica a Git di reimpostare i file nello stato del commit precedente ed eliminare eventuali modifiche a fasi. Per eseguire la stessa operazione in Visual Studio, fare clic con il pulsante destro del mouse sul commit in cui si vuole reimpostare il ramo e quindi scegliere Reimposta elimina modifiche (-hard).To do the same in Visual Studio, right-click the commit that you want to reset your branch to, and then select Reset>Delete Changes (--hard).

Screenshot che mostra la reimpostazione di un ramo in Visual Studio.

Per altre informazioni sulla reimpostazione dei rami, vedere la pagina Web Git per il comando di reimpostazione.