Salvare il lavoro con i commit

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

Visual Studio 2022 | Visual Studio 2019 | Visual Studio 2017 | Visual Studio 2015

Git non crea automaticamente snapshot del lavoro quando si modificano i file nel repository. È possibile indicare a Git quali modifiche ai file si vuole acquisire in uno snapshot eseguendo la gestione temporanea di modifiche specifiche. Dopo la gestione temporanea, salvare lo snapshot eseguendo un commit.

Questo articolo illustra le procedure per le attività seguenti:

  • Come Git tiene traccia delle modifiche
  • Che cos'è in un commit
  • Come preparare le modifiche
  • Come creare un commit
  • Come aggiornare l'ultimo commit

Per una panoramica del flusso di lavoro Git, vedere Azure Repos esercitazione su Git.

Come Git tiene traccia delle modifiche

Mentre si lavora nel repository, Git tiene traccia delle modifiche apportate a tutti i file rilevati . I file rilevati sono file attualmente in fase o inclusi nel commit precedente. Git separa i file rilevati in tre categorie:

  • File non modificati: i file non modificati dall'ultimo commit.
  • File modificati: i file modificati dopo l'ultimo commit ma non sono stati distribuiti per il commit successivo.
  • File di staging: i file modificati dopo l'ultimo commit e la gestione temporanea per il commit successivo.

Screenshot che mostra il ciclo di vita dei file nel repository tra i tre stati.

Quando si crea un commit, vengono usati solo file di staging e file non modificati per lo snapshot. Le modifiche non salvate ai file modificati vengono mantenute, ma lo snapshot contiene la versione non modificata di tali file. Git non tiene traccia delle modifiche apportate ai nuovi file o non include nuovi file nello snapshot fino a quando non vengono preparate.

I commit vengono creati nel repository Git locale. Ogni commit non deve essere perfetto e potrebbe essere necessario eseguire diversi commit per completare una modifica prevista. Creare commit mentre si lavora e al termine è possibile eseguire il push dei commit in un repository remoto per condividere il lavoro con altri utenti.

Che cos'è in un commit

Ogni commit include le informazioni seguenti:

  • Snapshot di tutti i file rilevati nel repository al momento del commit. Uno snapshot non è la differenza tra i commit, anche se Git usa gli snapshot per calcolare la differenza. Gli snapshot consentono il passaggio rapido tra rami e supportano l'unione dei rami.
  • Riferimento ai commit padre. La maggior parte dei commit ha un padre, ma il commit successivo dopo un'unione di rami ha più elementi padre e il primo commit in un repository non ha nessuna.
  • Messaggio che descrive le modifiche nel commit. Immettere il messaggio quando si crea il commit.

Git usa gli snapshot e i riferimenti padre di ogni commit per mantenere un record completo di sviluppo nel repository. Per esaminare le modifiche nel codice, è possibile esaminare la cronologia Git del repository.

Come preparare le modifiche

Per creare uno snapshot per un commit:

  • Preparare i nuovi file per informare Git di volerli aggiunti allo snapshot e si vuole che Git tengono traccia delle modifiche apportate a tali file in futuro.
  • Eseguire la fase dei file modificati per informare Git di volere la versione modificata del file nello snapshot, non la versione del file non modificata.
  • Eseguire il passaggio dei file eliminati per segnalare a Git di volerli rimossi dallo snapshot e non più rilevati.

Per escludere file temporanei, file di log o altri file dallo snapshot, è possibile configurare Git per ignorare file specifici.

Nota

Git supporta lo staging interattivo dei file modificati in modo da poter scegliere di organizzare modifiche specifiche all'interno di un file. Si tratta di una funzionalità utile quando si desidera modificare file diversi in commit diversi.

Visual Studio 2019 versione 16.8 e versioni successive offre un'esperienza di controllo della versione Git mantenendo l'interfaccia utente git di Team Explorer . Per usare Team Explorer, deselezionare Strumenti>Opzioni>anteprima Funzionalità>Nuova esperienza utente Git dalla barra dei menu. È possibile usare le funzionalità Git da entrambe le interfacce in modo intercambiabile. Di seguito viene fornito un confronto side-by-side delle modifiche apportate ai file.

Visual Studio Git

  1. Nella finestra Modifiche Git fare clic con il pulsante destro del mouse su un file nella sezione Modifiche e scegliere Fase per aggiungerlo alla sezione Modifiche a fasi.

Screenshot dell'opzione Modifiche nella finestra

In alternativa, è possibile preparare un file modificato selezionando il segno più accanto al file. Per eseguire il staging di tutti i file modificati in una cartella, selezionare il segno più accanto alla cartella. Per eseguire il commit di tutti i file modificati nel repository, selezionare il segno più nell'angolo superiore destro della sezione Modifiche .

Visual Studio Team Explorer

  1. In Team Explorer selezionare il pulsante Home e scegliere Modifiche.

Screenshot dell'opzione Modifiche in Team Explorer in Visual Studio 2019.

  1. Nella visualizzazione Modifiche fare clic con il pulsante destro del mouse su un file nella sezione Modifiche e scegliere Fase per aggiungerlo alla sezione Modifiche a fasi.

Screenshot del menu di scelta rapida con l'opzione

In alternativa, è possibile preparare un file modificato trascinandolo dalla sezione Modifiche alla sezione Modifiche a fasi . Per preparare tutti i file modificati in una cartella, fare clic con il pulsante destro del mouse sulla cartella e scegliere Fase. Per eseguire il commit di tutti i file modificati nel repository, selezionare il segno più nell'angolo superiore destro della sezione Modifiche .

È possibile indicare a Git di ignorare un file facendo clic con il pulsante destro del mouse e scegliendo Ignora questo elemento locale o Ignora questa estensione. Entrambi i comandi creano un file con estensione gitignore nel repository, se non esiste, e aggiunge una voce. I file ignorati non verranno visualizzati nella sezione Modifiche in Visual Studio. Tuttavia, il file con estensione gitignore non ha alcun effetto sui file rilevati. Per informazioni su come configurare Git per ignorare i file rilevati, vedere Ignorare i file. Per risparmiare tempo, è possibile scaricare i modelli .gitignore per vari ambienti di sviluppo dal repository GitHub gitignore .

Nota

Visual Studio 2019 non supporta le modifiche parziali di staging all'interno di un file. Visual Studio 2022 introduce tale funzionalità.

Come creare un commit

Visual Studio 2019 versione 16.8 e versioni successive offre un'esperienza di controllo della versione Git mantenendo l'interfaccia utente git di Team Explorer . Per usare Team Explorer, deselezionare Strumenti>Opzioni>anteprima Funzionalità>Nuova esperienza utente Git dalla barra dei menu. È possibile usare le funzionalità Git da entrambe le interfacce in modo intercambiabile. Di seguito viene fornito un confronto affiancato di come creare un commit.

Visual Studio Git

Nella finestra Modifiche Git immettere un messaggio che descrive le modifiche di gestione temporanea e quindi selezionare Commit a fasi.

Screenshot che mostra il collegamento informazioni sul commit in Visual Studio 2019.

Selezionare il collegamento commit per i dettagli del commit.

Screenshot che mostra il collegamento dei dettagli del commit alla finestra

Visual Studio Team Explorer

Nella visualizzazione Modifiche di Team Explorer immettere un messaggio che descrive le modifiche a fasi e quindi selezionare Commit a fasi.

Screenshot del testo del messaggio di commit e del pulsante

Selezionare il collegamento commit per i dettagli del commit.

Screenshot che mostra il collegamento dei dettagli del commit in 'Team Explorer' in Visual Studio 2019.

Nota

Se tutte le modifiche non sono state installate, è possibile ignorare la gestione temporanea ed eseguire direttamente il commit scegliendo Commit all (Esegui commit tutto).

Visual Studio Git

Screenshot dell'opzione 'Commit All' nella finestra 'Git Changes' in Visual Studio 2019.

Visual Studio Team Explorer

Screenshot dell'opzione

Come aggiornare l'ultimo commit

Git supporta la modifica dei file di gestione temporanea o del messaggio dell'ultimo commit. Questa operazione sostituisce l'ultimo commit con un nuovo commit che combina i file di staging da entrambi i commit e usa il nuovo messaggio di commit. La modifica di un commit è utile se si dimentica di preparare un file o l'ultimo messaggio di commit ha un errore di digitato.

Avviso

Non modificare un commit già sottoposto a push perché causerà problemi di sincronizzazione con il repository remoto. Per un commit push, usare una di queste strategie:

  • Creare ed eseguire il push di un altro commit che risolve i problemi causati dal commit precedente.
  • Annullare il commit precedente di cui è stato eseguito il push, usando git revert per creare un nuovo commit che ripristina tutte le modifiche apportate dal commit precedente. Eseguire quindi il push del nuovo commit.

Visual Studio 2019 versione 16.8 e versioni successive offre un'esperienza di controllo della versione Git mantenendo l'interfaccia utente git di Team Explorer . Per usare Team Explorer, deselezionare Strumenti>Opzioni>anteprima Funzionalità>Nuova esperienza utente Git dalla barra dei menu. È possibile usare le funzionalità Git da entrambe le interfacce in modo intercambiabile. Di seguito viene fornito un confronto affiancato di come modificare un commit.

Visual Studio Git

Nella finestra Modifiche Git , facoltativamente, inserire un messaggio di commit, selezionare Modifica, quindi scegliere Commit a fasi.

Screenshot che mostra l'opzione

La finestra Modifiche Git supporta la modifica del messaggio di commit, dei file di gestione temporanea o di entrambi. Quando si seleziona Modifica, viene visualizzato l'identificatore SHA per il commit precedente.

Visual Studio Team Explorer

Nella visualizzazione Modifiche di Team Explorer immettere un messaggio di commit nella fase di uno o più file e quindi scegliere Azioni > Modifica commit precedente.

Screenshot che mostra l'opzione

Team Explorer non supporta la modifica del messaggio di commit senza modificare anche uno o più file di staging.

Passaggi successivi