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. Il
tag Git
viene generalmente utilizzato per acquisire un punto cronologico che viene impiegato per una versione contrassegnata (ad esempio, v1.0.1).
- I tag sono riferimenti che rimandano a punti specifici nella cronologia Git. Il
- 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.
- La funzione di alto livello di
- 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.
- Il comando
materiale correlato
Scheda di riferimento rapido di Git
Scopri la soluzione
Impara a utilizzare Git con Bitbucket Cloud
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)
The first status output will show the file as unstaged. The git add
action will be reflected in the second git status
, and the final status output will tell you that there is nothing to commit—the working directory matches the most recent commit. Some Git commands (e.g., git merge) require the working directory to be clean so that you don't accidentally overwrite changes.
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.
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>"
Search for commits by a particular author. The <pattern>
argument can be a plain string or a regular expression.
git log --grep="<pattern>"
Search for commits with a commit message that matches <pattern>
, which can be a plain string or a regular expression.
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
5. Controlla lo stato del file.
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.
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
Condividi l'articolo
Argomento successivo
Letture consigliate
Aggiungi ai preferiti queste risorse per ricevere informazioni sui tipi di team DevOps e aggiornamenti continui su DevOps in Atlassian.