Recupero dello stato del repository Git

Completato

Per ottenere lo stato repository Git locale, è possibile usare il comando status. Verranno visualizzati i file che non sono stati tracciati, nonché quelli aggiunti o rimossi e di cui deve essere eseguito il commit.

git status

Questo comando può restituire un risultato simile al seguente:

On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        deleted:    BodyType.al

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        Car.al
        CarCard.al
        CarList.al

no changes added to commit (use "git add" and/or "git commit -a")

Questo comando consente di accedere agli altri comandi che è possibile usare per aggiungere o rimuovere file. Aggiungendo il file Car.al all'area di gestione temporanea, si ottiene il seguente risultato con il comando status.

On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   Car.al

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        deleted:    BodyType.al

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        CarCard.al
        CarList.al

Nella panoramica dello stato è possibile visualizzare un elenco di file all'interno dell'area di gestione temporanea e della directory di lavoro. Per compattare il risultato, è possibile usare l'opzione status -s. In questo modo i file vengono visualizzati in un elenco. La prima colonna indicherà lo stato del file all'interno dell'area di gestione temporanea e la seconda colonna lo stato del file all'interno della directory di lavoro.

Nell'esempio seguente è possibile vedere che il file BodyType.al è stato eliminato nell'area di lavoro (seconda colonna) ma non è stato ancora stato preparato per il commit (nella prima colonna non è presente lo stato). Il Car.al viene aggiunto all'area di gestione temporanea e il relativo stato della lettera è A. Entrambi gli altri due file non sono ancora tracciati, quindi non è specificato alcuno stato dei file né nella directory di lavoro né nell'area di gestione temporanea.

 D BodyType.al
A  Car.al
?? CarCard.al
?? CarList.al

Per ottenere un elenco di tutti i commit eseguiti nella directory Git, è possibile usare il comando log. Il comando log può anche accettare una serie di opzioni che mostreranno più informazioni su ciascun commit.

git log

Il comando di base log mostra un elenco dei commit con le informazioni sull'autore e sulla data, oltre al messaggio di commit.

commit e50111d6d92f0107e97924e5d9ee3c785a10e194 (HEAD -> master)
Author: Your Name <yourname@xyz.com>
Date:   Tue May 12 15:40:29 2020 +0200

    Initial Commit

Se si usa l'opzione -p, verrà inoltre incluso il contenuto e la differenza di contenuto con il commit precedente.

commit e50111d6d92f0107e97924e5d9ee3c785a10e194 (HEAD -> master)
Author: Your Name <yourname@xyz.com>
Date:   Tue May 12 15:40:29 2020 +0200

    Initial Commit

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8e38d70
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.alpackages/*.app
+*.app
+.vscode/launch.json
+.vscode/rad.json
diff --git a/BodyType.al b/BodyType.al
new file mode 100644
index 0000000..7fce165
--- /dev/null
+++ b/BodyType.al
@@ -0,0 +1,29 @@
+enum 50100 "Body Type"
+{
+    Extensible = true;
...

Sono disponibili altre interessanti opzioni di log. L'opzione --stat mostrerà quante righe per file sono state modificate all'interno del commit.

git log --stat

commit e50111d6d92f0107e97924e5d9ee3c785a10e194 (HEAD -> master)
Author: Your Name <yourname@xyz.com>
Date:   Tue May 12 15:40:29 2020 +0200

    Initial Commit

 .gitignore  |  4 ++++
 BodyType.al | 29 +++++++++++++++++++++++++++++
 app.json    | 39 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 72 insertions(+)

L'opzione --graph mostra una panoramica grafica dei differenti commit, inclusi diversi rami e unioni. Con l'opzione --pretty, è possibile rendere l'output più semplice e facile da leggere.

Sono disponibili alcune opzioni "pretty": oneline, short, full, fuller.

git log \--pretty=oneline \--graph

In Visual Studio Code lo stato viene immediatamente visualizzato nella finestra SCM. Le lettere A, D, U, M e così via indicano lo stato di ogni file.