Git è un software di *controllo versione distribuito* utilizzabile da interfaccia a riga di comando, creato da Linus Torvalds nel 2005. Git lavora con i repository, ognuno dei quali ha 4 stati di lavoro:
1. il primo stato è la *directory* corrente del progetto;
2. il secondo è l'*index* che fa da spazio di transito per i files (`git add *`);
3. il terzo è l'*head* che punta all'ultimo commit fatto (`git commit -m "messaggio"`);
4. l'ultimo è il *repository online* (`git push server`).
I repository online e locali possono essere divisi in ramificazioni o *branch*. I branch permettono di creare delle versioni alternative al codice presente nel ramo `master`, ovvero quello principale e stabile. Solitamente queste ramificazioni secondarie sono chiamate `dev`. Ciò permette la creazione di features o aggiornamenti in fase alpha che non vanno ad intaccare minimamente il codice del progetto. Finito la scrittura della ramificazione il branch dev verrà unito con il master.
Git permette anche di gestire i `tag`, le versioni del software in uso.
## Configurazioni di base di git
Configurare il git con le proprie credenziali:
```txt
git config --global user.name 'username'
git config --global user.email 'email@email.it'
```
### Creare un progetto
Ci son due modi per creare un progetto:
1. Inizializzare un progetto non esistente in locale:
```txt
git init
```
2. Inizializzare un progetto esistente su un server git (in remoto):
### Aggiungere i file dalla directory del progetto all'index
```txt
git add nome_file
```
Si può utilizzare l'asterisco `*` per aggiungere tutti i file. Se si vuole escludere un file dalla selezione totale, basta creare un file denominato `.gitignore` e inserire all'interno i file o le directory che non devono essere aggiunte all'index.