Userò questo breve tutorial per fare un ripassone di cos'è e come si usa Git da terminale.
Cos'è Git?
Git è il più popolare sistema di versionamento utilizzato nello sviluppo del software. Esso, considera i propri dati come una serie di istantanee (snapshot) di un filesystem. Ogni volta che si committa, o si salva lo stato di un progetto in Git, fondamentalmente lui fa un'immagine di tutti i file in quell'esatto momento, salvando un riferimento allo snapshot. Per essere efficiente, se alcuni file non sono cambiati, Git non li risalva, ma crea semplicemente un collegamento al file precedente già salvato.
Questa è una distinzione importante tra Git e praticamente tutti gli altri VCS. Git riconsidera quasi tutti gli aspetti del controllo di versione che la maggior parte degli altri sistemi ha copiato dalle generazioni precedenti. Questo rende Git più simile a un mini filesystem con a disposizione strumenti incredibilmente potenti che un semplice VCS.
La maggior parte delle operazioni in Git, necessitano solo di file e risorse locali per operare: Per esempio, per navigare la storia di un progetto, Git non ha bisogno di connettersi al server per scaricarla e mostrarla: la legge direttamente dal database locale. Questo significa che potete vedere la storia del progetto quasi istantaneamente. Se volete vedere le modifiche introdotte tra la versione corrente e la versione di un mese fa di un file, Git può accedere al file com'era e calcolare le differenze localmente, invece di dover richiedere ad un server remoto di farlo o di scaricare dal server remoto una versione precedente del file, per poi farlo in locale.
Qualsiasi cosa in Git è controllata, tramite checksum, prima di essere salvata ed è referenziata da esso. Questo significa che è impossibile cambiare il contenuto di qualsiasi file o directory senza che Git lo sappia. Questa è una funzionalità interna di basso livello di Git ed è intrinseco della sua filosofia. Non può capitare che delle informazioni in transito si perdano o che un file si corrompa senza che Git non sia in grado di accorgersene.
Quasi tutte le azioni in Git aggiungono dati al database di Git. È piuttosto difficile fare qualcosa che non sia annullabile o che cancelli i dati in una qualche maniera. Questo rende piaceole l'uso di Git perché sappiamo che possiamo sperimentare senza il pericolo di causare danni gravi.
Cosa sono i tre stati di Git?
I file in Git possono essere in tre stati: committed (committati), modified(modificati) e staged (in stage). Committato significa che il file è al sicuro nel database locale. Modificato significa che il file è stato modificato, ma non è ancora stato committato nel database. In stage significa che si è contrassegnato un file, modificato nella versione corrente, perché venga inserito nello snapshot alla prossima commit (cioè viene eseguito il comando add sul file).
La directory di Git (HEAD) è dove vengono salvati i metadati e il database degli oggetti del progetto. Questa è la parte più importante di Git, ed è ciò che viene copiato quando si clona un repository.
La directory di lavoro (Working directory) è il checkout di una versione specifica del progetto. Questi file vengono estratti dal database compresso nella directory di Git, e salvati sul disco per essere usati o modificati. Quindi è l'insieme dei file effettivi del progetto.
L'area di stage (Index) E' l'insieme dei file aggiunti con il comando add, messi in sosta e pronti per il prossimo commit.
Il workflow di base in Git funziona modificando i file nella working directory. Una volta terminate le modifiche vengono aggiunte nella stage area ed infine committate, finendo nell'HEAD.
Quindi:
I comandi base
I branches (rami) sono utilizzati per sviluppare features isolate le une dalle altre. Infatti, il branch master è il branch default quando si crea un nuovo repository. Si usano altri branche per sviluppare tali features e unire (merge) il codice risultate al branch master una volta terminate.
Sostituire le modifiche locali
Le informazioni presentate in questo articolo sono state raccolte dai siti web: