Guida Git in italiano


Nella lista dei must-have degli strumenti utili ad ogni sviluppatore web, ad oggi, non può mancare Git.
Git è, infatti, un tool indispensabile per ogni developer perchè consente di rendere il flusso di lavoro maggiormente organizzato e facilita la cooperazione dei web developers nella realizzazione dei progetti. Ma come funziona Git? 
Scopriamolo insieme!

Guida Git in italiano

1
Introduzione a Git per developers

Che cos'è Git?

1Che cos'è Git?

Git è un sistema di controllo delle versioni (version control system o VCS, talvolta indicato anche source control management system o SCM) free e open-source, creato da Linus Torvalds (il “papà” di Linux) nel 2005. Come ogni version control system, Git permette di gestire la cronologia di tutte le modifiche apportate al proprio codice ma, a differenza di altri strumenti ...

Continua a leggere
Nascita di Git

2Nascita di Git

Ma com'è nato Git? La “nascita” di Git è legata, come talvolta succede nel mondo open-source, alla necessità di avere una alternativa free a un tool proprietario. Nel 2005 lo sviluppo del kernel Linux aveva raggiunto, in termini di righe di codice, una dimensione ragguardevole e le varie modifiche apportate venivano gestite anche tramite l’invio per em...

Continua a leggere
Principali caratteristiche di Git

3Principali caratteristiche di Git

La storia della nascita di Git ci permette di capire quelle che sono le caratteristiche principali di questo tool. In quanto version control system, lo scopo di Git è quello di permettere la gestione delle modifiche apportate a una collezione di informazioni, che si tratti del codice sorgente di un'applicazione, della pagina HTML di un sito statico o di documentazione. L’evoluz...

Continua a leggere
Riga di comando e UI in Git

4Riga di comando e UI in Git

Git nasce come tool da usare dalla riga di comando (o terminale), affiancando, quindi, altri strumenti necessari nella quotidianità di uno sviluppatore web come editor, IDE, compilatori e via discorrendo. Da riga di comando l’eseguibile di Git permette di impartire uno dei vari comandi disponibili, passando le opportune opzioni (generiche) e argomenti (specifici del singolo comando...

Continua a leggere

3
Terminologia e concetti di Git

Repository in Git

8Repository in Git

Nel precedente capitolo abbiamo illustrato i comandi base di Git per lavorare su un repository, che sia stato creato da zero sul proprio computer o che sia stato recuperato da uno già esistente ospitato su un server remoto. Prima di entrare più nel dettaglio, è opportuno chiarire meglio alcuni concetti base di Git e come questi impattino sull’effettivo flusso di lavor...

Continua a leggere
Commit in Git

9Commit in Git

Un commit in Git rappresenta uno snapshot (istantanea) del repository in uno specifico momento nel tempo. Sebbene questa definizione possa sembrare banale, vale la pena sottolineare che: a differenza di altri version control system, il commit in Git non si limita a memorizzare le differenze tra due versioni successive del contenuto della directory, ma salva l’istantanea (compressa) del...

Continua a leggere
Working Copy in Git

10Working Copy in Git

Il concetto di Working Copy in Git (detta anche working directory o working tree) è strettamente legato al fatto che un repository Git gestisce la sequenza di snapshot (commit) di determinati file contenuti in una directory. Per capire cosa è e come funziona la working copy è, però, forse, più semplice farne un esempio: Nel momento in cui viene clonato un r...

Continua a leggere
Staging Area in Git

11Staging Area in Git

La staging area in Git è il luogo “virtuale” a cui aggiungere le modifiche presenti nella working copy che si intende salvare come commit. Anche per la staging area in Git vale la considerazione che è un concetto legato al funzionamento base di Git (sequenza di snapshot nel tempo estratti in una working area). Molto spesso, infatti, non tutte le modifiche apportate ...

Continua a leggere
Branch in Git

12Branch in Git

Abbiamo detto, poco sopra, che Git confronta i file presenti nella working copy rispetto al commit da cui sono stati estratti per capire in che stato si trovano. Più frequentemente, però, sentiremo dire (e inizieremo a dire anche noi) che le eventuali modifiche presenti nella working copy sono rispetto a un branch su cui sto lavorando. Proviamo a fare chiarezza. Sappiamo che un...

Continua a leggere
Remote in Git

13Remote in Git

Ultimo concetto base da chiarire è quello del o dei Remote in Git, inteso nell'accezione di repository remoto a cui in qualche modo il mio repository locale è collegato. Abbiamo visto che possiamo copiare sulla nostra macchina un repository pre-esistente su un server remoto tramite git clone. Nel momento in cui git clone crea la copia locale, salva anche il riferimento (URL...

Continua a leggere

5
Salvare modifiche in Git

Il comando Git add in Git

17Il comando Git add in Git

Quando si lavora con un version control system come Git, il concetto di “salvare modifiche” ha più sfumature rispetto al salvataggio di un file in un word processor o un editor di file. Abbiamo già visto come in Git l’azione “salva” è realizzabile tramite un commit. Vediamo più nel dettaglio tutti i comandi utili in Git per effettuare un...

Continua a leggere
Il comando Git commit in Git

18Il comando Git commit in Git

Il comando git commit fissa nella history del progetto uno snapshot dello stato attuale, ovvero una versione “sicura” o “rilevante” del progetto stesso. Le modifiche incluse nel salvataggio sono quelle che sono state esplicitamente incluse nella staging area tramite il comando git add. Se eseguito senza opzioni, viene aperto un editor di testo (configurabile tramite git ...

Continua a leggere
Il comando Git diff in Git

19Il comando Git diff in Git

git diff è un comando Git multi-uso che permette di visualizzare le differenze tra due data source, che siano essi file, commit, branch oppure altro. In questa sezione vedremo gli utilizzi più tipici di git diff e illustreremo il formato standard con cui sono mostrate tali differenze. Ecco un esempio pratico usando un repository creato da zero: $ mkdir repo_for_diff $ cd rep...

Continua a leggere
Il comando Git stash in Git

20Il comando Git stash in Git

Il comando git stash serve per mettere da parte tutte le attuali modifiche non committate, per recuperarle in un secondo momento. In pratica, serve in tutte quelle occasioni in cui si sono effettuate una serie di modifiche “WIP” (work in progress), non è ancora il momento di effettuare un commit, ma è necessario tornare tornare temporaneamente a una situazione “puli...

Continua a leggere
.gitignore : i file ignored in Git

21.gitignore : i file ignored in Git

Abbiamo visto in precedenza che Git considera i file presenti nella working copy distinguendoli in tracked (file che sono stati committati nel repository o inclusi nella staging area) e untracked (l’opposto del precedente). A questi due gruppi possiamo aggiungerne un terzo, i file ignored, ossia i file per i quali Git è stato espressamente istruito di escluderli dal controllo di ve...

Continua a leggere

6
Interrogare lo stato in Git

Il comando Git status in Git

22Il comando Git status in Git

Il comando git status mostra lo stato attuale della working directory e della staging area, permettendo, quindi, di vedere quali file modificati sono stati aggiunti alla staging area, quali file modificati non sono stati aggiunti alla staging area e quali file non sono tracciati nel repository. L’output di git status è uno dei più ricchi di informazioni tra i comandi di Git....

Continua a leggere
il comando Git log in Git

23il comando Git log in Git

Il comando git log permette di visualizzare la cronologia dei commit, filtrarla e cercare per specifiche modifiche. Così come git status opera sul working directory e staging area, git log opera sulla history dei commit. git log offre moltissime opzioni per personalizzare la visualizzazione dei commit e per filtrare. Qui di seguito alcune delle opzioni e configurazioni più utili. ...

Continua a leggere
Il comando Git tag in Git

24Il comando Git tag in Git

Git permette di aggiungere un tag a uno specifico commit, in modo da poter usare tale tag come riferimento per uno specifico punto nella history del repository. Utilizzo tipico dei tag è quello di contrassegnare un determinato rilascio o versione, per poter in un secondo momento accedervi con semplicità. A differenza dei branch, infatti, una volta creato un tag non vengono “agg...

Continua a leggere
Il comando Git blame in Git

25Il comando Git blame in Git

A concludere l’elenco dei comandi utili in Git per interrogare lo stato e la storia di un repository troviamo il comando git blame La traduzione letterale del verbo “to blame” è “incolpare” e infatti questo comando git viene usato per rispondere alla domanda “chi ha cambiato questa riga???”. È ovviamente utile nel caso di più person...

Continua a leggere

7
Annullare modifiche in Git

Il comando Git checkout in Git

26Il comando Git checkout in Git

Git non offre funzioni di “undo” simili a quello di programmi consumer, ma offre comunque diversi comandi che permettono di tornare sui propri passi e gestire la sequenza di commit nella history come se fosse una macchina del tempo. Il comando Git checkout in Git Sappiamo che Git memorizza una serie di snapshot di un progetto chiamati commit, ogni commit ha un suo identificativo ...

Continua a leggere
Il comando Git revert in Git

27Il comando Git revert in Git

Il comando git revert in Git permette di “rimuovere” dal repository una modifica indesiderata. Poiché, però, Git è pensato per preservare la history di un progetto e l’integrità della cronologia delle revisioni, il comando di revert opera aggiungendo un nuovo commit che è l’esatto opposto del commit che si vuole rimuovere. Supponiamo di...

Continua a leggere
Il comando Git reset in Git

28Il comando Git reset in Git

Similmente al precedente, il comando git reset in Git permette di annullare commit di un repository, ma lo fa in maniera distruttiva. In particolare, git reset può operare sulla history dei commit, quindi permette di alterare la history di un determinato branch. È un comando da usare con attenzione se non si vuole perdere parte del proprio lavoro. Infatti, il comando è desc...

Continua a leggere
Il comando Git rm in Git

29Il comando Git rm in Git

Il comando git rm in Git  serve per istruire Git a rimuovere un file dal tracciamento; è, in pratica, il comando opposto e complementare a git add. Ovviamente, in virtù del funzionamento di Git, sarà sempre possibile accedere alle varie versioni del file facendo checkout dei vari commit in cui quel file era ancora incluso tra quelli inclusi nel repository. Cos&igrav...

Continua a leggere

10
Introduzione ai repository “remote” in Git

Repository condiviso in Git

33Repository condiviso in Git

Nella sezione introduttiva abbiamo detto che uno dei vantaggi di Git è quello di proporre un modello di collaborazione distribuito. Abbiamo anche già spiegato come “recuperare” un progetto preesistente ospitato su un server remoto tramite il comando git clone. Entriamo più nel dettaglio nell’uso di un repository remoto da parte di più collaboratori,...

Continua a leggere
Il modello Fork & pull

34Il modello Fork & pull

Il modello repository (remoto) condiviso è il modo più semplice per collaborare allo sviluppo di un progetto tramite Git. Esiste un singolo repository remoto usato da tutti i collaboratori per inviare e ricevere commit. Vediamo un altro modello, promosso dal servizio GitHub, in cui esistono più repository remoti con diversi permessi per i collaboratori   Fork &...

Continua a leggere
Il comando Git remote in Git

35Il comando Git remote in Git

Quelle descritte nei capitoli precedenti, ed altre modalità di collaborazione sono possibili grazie ai tracked repository (o remote repository) che è possibile collegare a ogni repository Git tramite il comando git remote. Il comando git remote in git, nella realtà, non si occupa di effettuare l’effettivo acceso o sync a tali repository remoti, ma gestisce quelli che ...

Continua a leggere
I principali repository remote di Git: Github, Gitlab e Bitbucket

36I principali repository remote di Git: Github, Gitlab e Bitbucket

Dopo aver esplorato i modelli di collaborazione e di sviluppo condiviso in Git, vediamo quali sono i suoi principali repository online.   GitHub cos’è? Per essere molto chiari su cosa sia esattamente GitHub, si tratta di un servizio di condivisione di file o codice per collaborare con diverse persone.  GitHub è un software molto utilizzato per il controllo...

Continua a leggere

14
Git workflow e strategie di branching in Git

Workflow Git centralizzato

45Workflow Git centralizzato

Git è il sistema di version control più usato al mondo, anche grazie alla sua estrema flessibilità nell’adattarsi al flusso di lavoro di ciascuno e del team. Nel tempo, sono emerse buone pratiche e raccomandazioni sull’uso efficiente di Git, al fine di poter lavorare in modo coerente e produttivo. Tali pratiche prendo il nome di “workflow”, propri...

Continua a leggere
Workflow Git feature branching

46Workflow Git feature branching

Vengono usati i branch per isolare lo sviluppo di una funzione o fix rispetto al branch principale del repository. Solo una volta completato lo sviluppo la feature viene riportata sul branch principale. I feature branch in Git sono uploadati sull’unico repository remoto e più sviluppatori possono contribuire all’implementazione della feature. Il “merge” della f...

Continua a leggere
Workflow Git trunk-based

47Workflow Git trunk-based

Il Workflow Git trunk-based è, per certi versi, l’unione dei due precedenti e cerca di unire diverse esigenze e riflessioni legate allo sviluppo software moderno. Il workflow trunk-based in Git segue l’indicazione di facilitare lo sviluppo concorrente su un singolo branch principale, offrendo diversi suggerimenti su come ottenere questo risultato. Tali suggerimenti sono anche...

Continua a leggere
Approccio “forking” in Git

48Approccio “forking” in Git

I workflow visti finora erano accomunati dal fatto di avere comunque un singolo repository remoto di riferimento, che poteva eventualmente usare i branch per isolare gli sviluppi. Nell’approccio “forking” invece, viene creato un repository separato da quello principale, creando, quindi, una nuova e separata struttura di collaborazione. Questo tipo di approccio è spesso ...

Continua a leggere
Gitflow in Git

49Gitflow in Git

Un'ultima doverosa sezione sul Git workflow noto come “GitFlow”. Come abbiamo detto all’inizio di questa sezione e di questa guida, Git in sé non è prescrittivo sull’uso di determinate funzioni, ma lascia allo sviluppatore web e al team trovare il flusso più adatto alle sue esigenze. GitFlow è stato, forse, il primo workflow proposto al...

Continua a leggere
Scopri i corsi

Le nostre guide possono essere molto utili per muovere i primi passi nel mondo della programmazione, ma se vuoi iniziare una nuova carriera in ambito digital & tech con il supporto costante dei docenti e tantissime esercitazioni pratiche, ti consigliamo di frequentare uno dei corsi della nostra Hackademy!

Scopri i corsi