Uno degli strumenti principali per conoscere lo stato dei file all’interno di un repository è il comando:
git status
Se eseguito immediatamente dopo la clonazione di un repository, l’output potrebbe essere simile a quello mostrato in FIG 1.
![]() |
FIG 1 - Nothing to commit |
Questo messaggio indica che la working directory è "pulita": nessun file tracciato è stato modificato e non esistono file non tracciati. Inoltre, il comando segnala il ramo corrente (in questo caso master) e l'eventuale stato di sincronizzazione con il corrispondente ramo remoto (Ad esempio con il messaggio Your branch is up to date with 'origin/master'.).
Gestione nuovo file
Supponiamo di creare, all'interno della cartella del progetto, un nuovo file Readme.txt. Rieseguendo il comando git status avremo il messaggio mostrato in FIG 2.
![]() |
FIG 2 - Untracked files |
Come si può osservare, il file Readme.txt compare nella sezione Untracked files. Questo significa che Git lo rileva nella directory di lavoro, ma non lo sta ancora monitorando. Tale comportamento impedisce di includere accidentalmente file temporanei, binari generati o altri elementi non desiderati.
Per iniziare a tracciare il file è necessario utilizzare il comando:
git add Readme.txt
Eseguendo nuovamente git status si ottiene quanto mostrato in FIG 3.
![]() |
FIG 3 - Changes to be committed |
Ora Readme.txt risulta staged e pronto per essere incluso nel prossimo commit.
Gestire file modificati
Se si modifica un file già tracciato, ad esempio form.cs, l’output sarà simile a quello mostrato in FIG 4
![]() |
FIG 4- Modified |
git add form.cs
Eseguendo git status si vedrà che entrambi i file (Readme.txt e form.cs) sono ora pronti per il commit (FIG 5).
![]() |
FIG 5 - Changes to be committed |
Modifiche ulteriori su file già in staging
Può accadere di modificare nuovamente un file già aggiunto allo staging. In tal caso, lo stesso file apparirà in due sezioni contemporaneamente. Supponiamo di modificare nuovamente il file form.cs. Andando a visualizzare lo stato dei file con git status avremo la situazione mostrata in FIG 6.
![]() |
FIG 6 - Modifica file già in staging |
Il file modificato, form.cs, appare in due sezioni:
- Changes to be committed: rappresenta la versione del file già aggiunta allo staging.
- Changes not staged for commit: rappresenta la nuova versione del file, ancora non inclusa.
Questo comportamento è dovuto al fatto che Git memorizza nello staging area l’esatta istantanea del file al momento in cui è stato eseguito git add. Se il file viene modificato successivamente, per aggiornare l’istantanea occorre eseguire nuovamente:
git add form.cs
In questo modo, la versione aggiornata del file verrà inclusa nel prossimo commit.
Short Status
L’output del comando git status è piuttosto dettagliato, ma può risultare prolisso in alcune circostanze. Per questo motivo, Git mette a disposizione una modalità compatta tramite i flag:
git status -s
oppure
git status --short
Il risultato è una rappresentazione semplificata delle modifiche presenti nella working directory e nell’area di staging (FIG 7).
![]() |
FIG 7 - Short Status |
L'output del comando è composto da due colonne più il nome del file: la colonna di sinistra (caratteri di colore verde) rappresenta lo stato del file nell’area di staging mentre quella di destra (caratteri di colore rosso) rappresenta lo stato del file nella working directory.
Significato dei simboli
- ?? → file non tracciato (non incluso nello staging, nuovo file).
- A → file aggiunto allo staging (tracked per la prima volta).
- M → file modificato.
- D → file eliminato.
- R → file rinominato.
- C → file copiato.
Riassumendo
- git status è lo strumento di riferimento per monitorare lo stato della working directory.
- git add serve non solo ad aggiungere nuovi file al versionamento, ma anche ad aggiornare le modifiche di file già tracciati.
- Lo staging rappresenta uno snapshot intermedio: il commit fotografa esattamente i contenuti presenti nello staging al momento dell’esecuzione di git commit.
Nessun commento:
Posta un commento
I messaggi sono soggetti a moderazione da parte dell'amministratore prima della loro pubblicazione.