Da Anonimo (non verificato) , 29 Aprile 2026

Sinossi

git add [-p] [-A] [-u] [--] [<pathspec>...]

Descrizione

Il comando git add sposta le modifiche dalla tua working tree alla staging area (chiamata anche index). La staging area è uno snapshot di ciò che andrà nel prossimo commit. Mettendo in stage le modifiche esplicitamente, Git ti permette di creare commit che contengono esattamente il lavoro che vuoi registrare — anche se la tua working tree ha altre modifiche non correlate in corso.

git add può mettere in stage interi file, parti di file (con -p) o directory. Non committa nulla; aggiorna solo l'index. Il workflow più comune è: modifica, git status, git add, git commit. Padroneggiare git add, specialmente le sue modalità interattive, è uno dei modi migliori per rendere la storia dei commit leggibile e facile da rivedere.

Nell'uso quotidiano, git add si integra strettamente con alias della shell, plugin dell'editor e integrazione continua. Gli utenti esperti spesso aggiungono alias che combinano flag che passano sempre, o avvolgono il comando in script che applicano convenzioni del team. La formattazione dell'output può essere personalizzata tramite Git config — formati pretty, schemi di colori e comportamento del pager sono tutti regolabili. Quando qualcosa va storto, il primo passo diagnostico è di solito ri-eseguire il comando con GIT_TRACE=1 nell'ambiente, che rivela le chiamate di plumbing sottostanti. Per situazioni insolite, l'output di --help (git add --help) apre la man page completa con dettagli su ogni opzione.

Capire come git add interagisce con il resto del modello dati di Git — il database degli oggetti, l'index, i ref e la working tree — paga dividendi. Ogni comando opera su un sottoinsieme di questi pezzi, e sapere quali tocca aiuta a prevedere i risultati e recuperare dagli errori. La maggior parte dei problemi di produzione con Git deriva da una di tre cause: comportamento predefinito sorprendente, operazioni di rete parziali o riscrittura di storia già condivisa.

Opzioni comuni

OpzioneDescrizione
-A, --allMette in stage tutte le modifiche nella working tree, incluse cancellazioni e nuovi file.
-u, --updateMette in stage solo modifiche e cancellazioni di file tracciati — ignora i nuovi file.
-p, --patchSceglie interattivamente gli hunk di modifiche da mettere in stage.
-n, --dry-runMostra cosa verrebbe messo in stage senza farlo.
-f, --forceAggiunge file anche se corrispondono a .gitignore.
-i, --interactiveApre un'interfaccia a menu per lo staging.
--intent-to-add / -NRegistra l'intento di aggiungere un file così che il suo diff appaia.

Esempi

git add README.md src/main.c
# Mette in stage due file specifici

git add -A
# Mette in stage tutto: file nuovi, modificati e cancellati

git add -p
# Rivede e mette in stage gli hunk uno a uno interattivamente

git add 'src/**/*.js'
# Mette in stage tutti i file JavaScript sotto src usando un pathspec

Errori comuni

Eseguire git add . alla cieca spesso mette in stage file non intenzionali — file di log, artefatti di build, chiavi segrete. Usa prima git status e considera -p per modifiche sensibili. Un'altra confusione comune: git add -u non prenderà i nuovi file, mentre git add . sì. Dopo aver messo in stage, se modifichi di nuovo un file, quelle modifiche successive non sono in stage finché non ri-esegui git add.

Comandi correlati

git commit, git status, git restore, git reset