Ispezione di un repository

Git Status: ispezione di un repository

git status

Il comando git status visualizza lo stato della directory di lavoro e l'area di staging. Ti permette di vedere quali modifiche sono state sottoposte a staging, quali no e quali file non vengono tracciati da Git. L'output dello stato non mostra alcuna informazione sulla cronologia del progetto sottoposto a commit. Per questo, devi usare git log.

Comandi git correlati

  • git tag
    • I tag sono riferimenti che rimandano a punti specifici nella cronologia Git. Vengono generalmente utilizzati per acquisire un punto cronologico che viene utilizzato per una versione contrassegnata (ad es. v1.0.1).
  • git blame
    • La funzione di alto livello di git blame è la visualizzazione dei metadati dell'autore allegati a specifiche righe confermate in un file. Viene utilizzato per esplorare la cronologia di un codice specifico e rispondere a domande su cosa, come e perché il codice è stato aggiunto a un repository.
  • git log
    • Il comando git log mostra le istantanee confermate. Il comando git log ti consente di elencare la cronologia del progetto, filtrarla e cercare modifiche specifiche.

Utilizzo

git status

Elenco dei file in fase di staging, non archiviati e non tracciati.

Discussione

Il comando git status è un comando relativamente semplice. Ti mostra semplicemente cosa sta succedendo con git add e git commit. I messaggi di stato includono anche istruzioni pertinenti per i file di staging/destaging. Di seguito è riportato un esempio di output che mostra le tre categorie principali di una chiamata di git status:

# On branch main
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
#modified: hello.py
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
#modified: main.py
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
#hello.pyc

Ignorare i file

I file non tracciati in genere rientrano in due categorie. Sono file che sono appena stati aggiunti al progetto e non sono ancora stati salvati, oppure sono file binari compilati come .pyc, .obj, .exe, ecc. Sebbene sia sicuramente utile includere il primo nell'output di git status, il secondo può rendere difficile vedere cosa sta effettivamente succedendo nel tuo repository.

Per questo motivo, Git ti consente di ignorare completamente i file inserendo i percorsi in un file speciale chiamato .gitignore. Tutti i file che desideri ignorare devono essere inclusi in una riga separata e il simbolo * può essere usato come jolly. Ad esempio, aggiungendo quanto segue a un file .gitignore il file nella cartella principale del tuo progetto impedirà ai moduli Python compilati di apparire in git status:

*.pyc

Esempio

È buona norma controllare lo stato del tuo repository prima di apportare modifiche in modo da non eseguire accidentalmente il commit di qualcosa che non intendi fare. Questo esempio mostra lo stato del repository prima e dopo lo staging e il salvataggio di un'istantanea:

# Edit hello.py
git status
# hello.py is listed under "Changes not staged for commit"
git add hello.py
git status
# hello.py is listed under "Changes to be committed"
git commit
git status
# nothing to commit (working directory clean)

Il primo output di stato mostrerà il file come non sottoposto a staging. L'azione git add si rifletterà nel secondo git status e lo stato finale in uscita ti dirà che non c'è nulla da sottoporre a commit: la directory di lavoro corrisponde al commit più recente. Alcuni comandi Git (ad esempio git merge) richiedono che la directory di lavoro sia pulita in modo da non sovrascrivere accidentalmente le modifiche.

Git log

Il comando git log mostra le istantanee confermate. Il comando git log ti consente di elencare la cronologia del progetto, filtrarla e cercare modifiche specifiche. Mentre git status ti consente di esaminare la directory di lavoro e l'area di gestione, git log funziona solo sulla cronologia del commit.

Tutorial su Git: git status e git log

L'output del registro può essere personalizzato in diversi modi, dal semplice filtraggio dei commit alla loro visualizzazione in un formato completamente definito dall'utente. Alcune delle configurazioni più comuni di git log sono presentate di seguito.

Utilizzo

git log

Visualizza l'intera cronologia dei commit utilizzando la formattazione predefinita. Se l'output occupa più di una schermata, puoi usare la barra spaziatrice per scorrere e q per uscire.

git log -n <limit>

Limita il numero di commit per . Ad esempio, git log -n 3 mostrerà solo 3 commit.

Riduci ogni commit a un'unica riga. Questo è molto utile per avere una panoramica generale sul tuo progetto.

git log --oneline
git log --stat

Oltre alle normali informazioni di git log, includi quali file sono stati modificati e il numero relativo di righe che sono state aggiunte o eliminate da ciascuno di essi.

git log -p

Visualizza la patch che rappresenta ogni commit. Mostra la differenza completa di ogni commit, che è la visualizzazione più dettagliata che puoi avere della cronologia del tuo progetto.

git log --author="<pattern>"

Cerca i commit di un determinato autore. L'argomento dello può essere una stringa semplice o un'espressione regolare.

git log --grep="<pattern>"

Cerca i commit con un messaggio di commit che corrisponda a uno , che può essere una stringa semplice o un'espressione regolare.

git log <since>..<until>

Mostra solo i commit che si verificano tra e . Entrambi gli argomenti possono essere un ID di commit, il nome di un branch, HEAD o qualsiasi altro tipo di riferimento di revisione.

git log <file>

Visualizza solo i commit che includono il file specificato. Questo è un modo semplice per visualizzare la cronologia di un determinato file.

git log --graph --decorate --oneline

Alcune opzioni utili da considerare. Il flag —graph che disegnerà un grafico testuale dei commit sul lato sinistro dei messaggi di commit. —decorate aggiunge i nomi dei branch o dei tag dei commit mostrati. —oneline mostra le informazioni sui commit su un'unica riga, semplificando la navigazione tra i commit a colpo d'occhio.

Discussione

Il comando git log è lo strumento di base di Git per esplorare la cronologia di un repository. È quello che usi quando devi trovare una versione specifica di un progetto o capire quali modifiche verranno introdotte dalla fusione in un branch di funzionalità.

commit 3157ee3718e180a9476bf2e5cab8e3f1e78a73b7
Author: John Smith

La maggior parte di questo è piuttosto semplice; tuttavia, la prima riga merita qualche spiegazione. La stringa di 40 caratteri dopo il commit è un checksum SHA-1 del contenuto del commit. Questo ha due scopi. Innanzitutto, garantisce l'integrità del commit: se mai fosse danneggiato, il commit genererebbe un checksum diverso. In secondo luogo, funge da ID univoco per il commit.

Questo ID può essere utilizzato in comandi come git log .. per fare riferimento a commit specifici. Ad esempio, git log 3157e.. 5ab91 mostrerà tutto ciò che è compreso tra i commit con ID 3157e e 5ab91. Oltre ai checksum, i nomi dei branch (discussi nel Modulo Branch) e la parola chiave HEAD sono altri metodi comuni per fare riferimento ai singoli commit. HEAD si riferisce sempre al commit corrente, che si tratti di un branch o di un commit specifico.

Il carattere ~ è utile per creare riferimenti relativi all'elemento padre di un commit. Ad esempio, 3157e~1 si riferisce al commit prima di 3157e e HEAD~3 è l'elemento superiore di tre livelli del commit corrente.

L'idea alla base di tutti questi metodi di identificazione è consentirti di eseguire azioni basate su commit specifici. Il comando git log è in genere il punto di partenza per queste interazioni, in quanto ti consente di trovare i commit con cui vuoi lavorare.

Esempio

La sezione Utilizzo fornisce molti esempi di git log, ma tieni presente che diverse opzioni possono essere combinate in un unico comando:

git log --author="John Smith" -p hello.py

Verrà visualizzata una differenza completa di tutte le modifiche apportate da John Smith al file hello.py.

La sintassi ... è uno strumento molto utile per confrontare i branch. Il prossimo esempio mostra una breve panoramica di tutti i commit presenti in alcune funzionalità che non sono nella sezione principale.

git log --oneline main..some-feature

Pronto per conoscere git status?

Prova questo tutorial interattivo.

Inizia ora