git add
Quando si lavora in Git o in altri sistemi di controllo delle versioni, il concetto di "salvataggio" è un processo più sfumato rispetto al salvataggio in un elaboratore di testi o in altre applicazioni tradizionali di modifica dei file. L'espressione software tradizionale di "salvataggio" è sinonimo del termine Git "commit". Un commit è l'equivalente in Git di un" salvataggio". Il salvataggio tradizionale dovrebbe essere considerato come un'operazione del file system utilizzata per sovrascrivere un file esistente o scriverne uno nuovo. In alternativa, l'esecuzione di Git è un'operazione che agisce su una raccolta di file e directory.
Anche il salvataggio delle modifiche in Git vs SVN è un processo diverso. I commit SVN o «check-in» sono operazioni che effettuano un push remoto verso un server centralizzato. Ciò significa che un commit SVN necessita di un accesso a Internet per «salvare» completamente le modifiche al progetto. I commit Git possono essere acquisiti e creati localmente, quindi inviati a un server remoto secondo necessità utilizzando il comando git push -u origin main
. La differenza tra i due metodi è una differenza fondamentale tra i progetti di architettura. Git è un modello di applicazione distribuito mentre SVN è un modello centralizzato. Le applicazioni distribuite sono generalmente più robuste in quanto non hanno un singolo punto di errore come un server centralizzato.
I comandi git add, git status e git commit sono tutti usati in combinazione per salvare un'istantanea dello stato corrente di un progetto Git.
Git ha un meccanismo di salvataggio aggiuntivo chiamato "stash". Lo stash è un'area di archiviazione effimera per le modifiche che non sono pronte per essere sottoposte a commit. Lo stash funziona sulla directory di lavoro, il primo dei tre alberi e ha ampie opzioni di utilizzo. Per saperne di più, visita la pagina di git stash.
Un repository Git può essere configurato per ignorare file o directory specifici. Ciò impedirà a Git di salvare le modifiche a qualsiasi contenuto ignorato. Git ha diversi metodi di configurazione che gestiscono l'elenco degli ignorati. Git ignore configure è discusso più dettagliatamente nella pagina di git ignore.
git add
Il comando git add
aggiunge una modifica dalla directory di lavoro all'area di staging Git. Indica a Git che desideri includere gli aggiornamenti di un determinato file nel prossimo commit. Tuttavia, git add
non influisce in modo significativo sul repository: le modifiche non vengono effettivamente registrate finché non esegui git commit.
Insieme a questi comandi, avrai anche bisogno di git status per visualizzare lo stato della directory di lavoro e dell'area di staging.
Come funziona
I comandi git add
e git commit costituiscono il flusso di lavoro Git fondamentale. Questi sono i due comandi che ogni utente Git deve comprendere, indipendentemente dal modello di collaborazione del proprio team. Sono i mezzi per registrare le versioni di un progetto nella cronologia del repository.
Lo sviluppo di un progetto ruota attorno al modello di base edit/stage/commit. Per prima cosa, modifichi i tuoi file nella directory di lavoro. Quando sei pronto a salvare una copia dello stato corrente del progetto, esegui le modifiche con git add
. Quando sei soddisfatto dell'istantanea sottoposta a staging, la trasferisci nella cronologia del progetto con git commit
. Il comando git reset viene utilizzato per annullare un commit o un'istantanea temporanea.
Oltre a git add
e git commit
, un terzo comando git push è essenziale per un flusso di lavoro Git collaborativo completo. git push
viene utilizzato per inviare le modifiche confermate ai repository remoti per la collaborazione. Ciò consente agli altri membri del team di accedere a una serie di modifiche salvate.
materiale correlato
Branch Git
Scopri la soluzione
Impara a utilizzare Git con Bitbucket Cloud
Il comando git add
non deve essere confuso con svn add
, che aggiunge un file al repository. Invece, git add
funziona su un livello di modifiche più astratto. Ciò significa che git add
deve essere richiamato ogni volta che modifichi un file, mentre svn add
deve essere richiamato solo una volta per ogni file. Può sembrare ridondante, ma questo flusso di lavoro semplifica notevolmente l'organizzazione di un progetto.
L'area di staging
La funzione principale del comando git add
è quella di promuovere le modifiche in sospeso nella directory di lavoro, nell'area di staging git
. L'area di staging è una delle funzionalità più esclusive di Git e potrebbe essere necessario un po' di tempo per capirla se hai una formazione SVN (o anche Mercurial). È utile considerarlo come una transizione tra la directory di lavoro e la cronologia del progetto. L'area di staging è considerata uno dei "tre alberi" di Git, insieme alla directory di lavoro e alla cronologia dei commit.
Invece di apportare tutte le modifiche apportate dall'ultimo commit, lo staging ti consente di raggruppare le modifiche correlate in istantanee altamente mirate prima di trasferirle effettivamente nella cronologia del progetto. Ciò significa che puoi apportare qualsiasi tipo di modifica a file non correlati, quindi tornare indietro e dividerli in commit logici aggiungendo le modifiche correlate allo staging e salvarle pezzo per pezzo. Come in qualsiasi sistema di controllo delle revisioni, è importante creare commit minuscoli in modo che sia facile rintracciare i bug e annullare le modifiche con un impatto minimo sul resto del progetto.
Opzioni comuni
git add <file>
Posiziona tutte le modifiche nel <file>
per il prossimo commit.
git add <directory>
Posiziona tutte le modifiche nella <directory>
per il prossimo commit.
git add -p
Inizia una sessione interattiva di staging che ti consenta di scegliere parti di un file da aggiungere al commit successivo. Questo ti presenterà una serie di modifiche e ti richiederà un comando. Usa y
per eseguire lo staging del blocco, n
per ignorarlo, s
per dividerlo in blocchi più piccoli, e
per modificare manualmente il blocco e q
per uscire.
Esempi
Quando inizi un nuovo progetto, git add
ha la stessa funzione di svn import
. Per creare un commit iniziale della directory corrente, usa i seguenti due comandi:
git add .
git commit
Una volta che il progetto è attivo e funzionante, è possibile aggiungere nuovi file passando il percorso a git add
:
git add hello.py
git commit
I comandi sopra riportati possono essere utilizzati anche per registrare le modifiche ai file esistenti. Ancora una volta, Git non fa distinzione tra modifiche temporizzate in nuovi file e modifiche nei file che sono già stati aggiunti al repository.
Riepilogo
In sintesi, git add
è il primo comando di una catena di operazioni che indirizza Git a "salvare" un'istantanea dello stato corrente del progetto, nella cronologia dei commit. Se usato da solo, git add
promuoverà le modifiche in sospeso dalla directory di lavoro all'area di staging. Il comando git status viene utilizzato per esaminare lo stato corrente del repository e può essere usato per confermare una promozione git add
. Il comando git reset viene utilizzato per annullare un git add
. Il comando git commit viene quindi utilizzato per salvare un'istantanea della directory di staging nella cronologia dei commit dei repository.
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.