Git conserva la storia delle modifiche di un progetto. Qui introduco il funzionamento del repository, la registrazione dei cambiamenti e i comandi essenziali — senza pretendere di esaurire uno strumento che è molto più grande di così.
Identità dell'autore e configurazione
Prima di registrare qualsiasi cosa, Git deve sapere quale nome e quale email associare ai commit. La configurazione globale vale per l'utente del computer; dentro un progetto puoi impostarne una diversa.
Attenzione a una confusione frequente: l'identità registrata nei commit non è l'autenticazione a un servizio remoto. Sono due cose separate — attribuire il lavoro e ottenere accesso al server.
Repository, area di preparazione e commit
Il repository conserva la storia. Nella cartella di lavoro modifichi i file. L'area di preparazione ti fa scegliere quali cambiamenti entrano nel prossimo commit.
Questa separazione è il concetto centrale, e all'inizio sembra un passaggio inutile. Non lo è: un commit dovrebbe descrivere un pezzo di lavoro comprensibile, con un messaggio che lo renda riconoscibile fra sei mesi.
Un percorso minimo
I comandi introduttivi ruotano attorno a poche operazioni: inizializzare o clonare un repository, controllarne lo stato, preparare le modifiche, registrarle.
Controllare lo stato prima del commit è l'abitudine che ti salva dall'includere file che non c'entrano nulla — e succede più spesso di quanto immagini.
Mostro anche l'integrazione con l'ambiente di sviluppo, con VSCodium. L'interfaccia grafica rende visibili le operazioni, ma conviene comunque sapere che cosa stai facendo sotto: quando qualcosa va storto, i pulsanti non bastano.
Git e i servizi di hosting non sono la stessa cosa
Git è il sistema di controllo delle versioni. Un servizio remoto ti permette di condividere repository e collaborare, ma non serve per capire come funziona la cronologia locale.
L'obiettivo del primo esercizio è modesto e concreto: sapere quali file sono cambiati, che cosa verrà registrato e come riconoscere quella modifica nella storia del progetto.