Da Anonimo (non verificato) , 29 Aprile 2026

Introduzione

Quasi ogni sessione Git segue lo stesso ritmo a tre fasi: modifica i file nella tua working tree, metti in stage le modifiche che vuoi registrare e fai il commit nella storia. Padroneggiare questo ciclo è la base di tutto il resto.

Le tre aree

  • Working tree: file su disco che modifichi con il tuo editor.
  • Index (chiamato anche staging area): uno snapshot di ciò che andrà nel prossimo commit.
  • Repository: la storia committata memorizzata in .git.

Un ciclo completo

  1. Modifica un file nel tuo editor.
  2. Esegui git status per vedere cos'è cambiato.
  3. Esegui git diff per ispezionare le modifiche.
  4. Metti in stage con git add.
  5. Fai commit con git commit.
echo "hello" >> notes.txt
git status
git diff
git add notes.txt
git diff --staged
git commit -m "Add greeting to notes"

Stage selettivo

Puoi mettere in stage singoli file, pattern glob o anche parti di un file usando la modalità interattiva:

git add notes.txt readme.md
git add "src/*.py"
git add -p notes.txt    # patch mode: yes/no per ogni hunk

La modalità patch è preziosa quando hai modifiche miste che vuoi dividere in commit separati.

Saltare l'index

La scorciatoia git commit -a mette in stage e committa tutti i file tracciati in un solo passo. Non aggiunge nuovi file (untracked):

git commit -am "Quick fix"

Scrivere buoni commit

Un messaggio di commit ha una riga oggetto breve (50 caratteri circa) e un corpo opzionale che spiega il perché. Esegui git commit senza -m per aprire l'editor:

git commit
# si apre l'editor
# Riga oggetto
#
# Spiegazione più lunga...

Commit atomici

Un buon commit cattura un cambiamento logico. Costruiscilo deliberatamente: metti in stage esattamente gli hunk che vanno insieme con git add -p, poi committa. Se ti ritrovi a descrivere un commit con "e" nell'oggetto ("Fix login and refactor logger"), probabilmente dovrebbe essere due commit.

git add -p src/auth.py        # stage solo del fix di login
git commit -m "Fix login redirect on expired session"
git add -p src/logger.py
git commit -m "Refactor logger to use structured fields"

I commit atomici rendono git bisect, git revert e la code review enormemente più facili in seguito.

Errori comuni

Dimenticare il git add di nuovi file ed essere sorpresi da un commit "vuoto". git status dice sempre la verità; leggilo prima di committare. Un'altra trappola: usare git commit -am quando hai nuovi file untracked, che li lascia silenziosamente fuori. Infine, committare file generati (output di build, node_modules, impostazioni dell'IDE) ingombra la storia e rallenta i clone; aggiungili a .gitignore prima di metterli in stage. Nel dubbio, esegui git diff --staged per vedere esattamente cosa conterrà il prossimo commit.