Esistono tre aree distinte in git
, la working directory, che sono tutti i file su cui sto effettivamente lavorando, lβarea di staging e la git directory, che Γ¨ una cartella .git/ nella directory attuale in cui vengono salvate tutte le informazioni sulla repository (branch, tag, remote..).
Lβarea di staging memorizza tutte le informazioni che verranno salvate nel prossimo commit.
Ricapitolando, io lavoro nella working directory, il comando git add
permette di portare i file modificati nellβarea di staging. Il comando git commit
permette successivamente di portare i file modificati dallβarea di staging alla cartella .git/.
In una cartelle di lavoro, posso avere i file in tre stati distinti (controllabili tramite il git status
):
- untrakced: il file non era presente nello scorso commit, Γ¨ stato conseguentemente creato ma non appartiene ad alcuna repository. Il file non comparirΓ nel prossimo commit.
- unstaged: il file Γ¨ presente nella repository ma non Γ¨ stato portato nellβarea di staging. Le modifiche non compariranno nel prossimo commit.
- staged: il file Γ¨ stato modificato e questo si trova nellβarea di staging. Conseguentemente tali modifiche compariranno nel prossimo commit.
Come scrivevo, il comando git add
permette di far passare un file dallβarea dalla working directory allβarea di staging, qualora volessi effettuare lβoperazione opposta eseguo un git reset --filename
(per approfondire vedi la prossima sezione).