Commit

Commit

Un commit è un'istantanea (snapshot) dello stato
di un repository in un determinato momento

Un repository è quindi un insieme di commit
in ordine temporale

Commit

Come si crea un commit?

Per prima cosa è necessario dire a git
quali file includere in questo commit

git add file1.txt file2.json
Commit

Come si crea un commit?

Ma cosa è cambiato?

git status
On branch master

No commits yet

Changes to be committed:
(use "git rm --cached <file>..." to unstage)
	new file:   file1.txt
	new file:   file2.json
Commit

Come si crea un commit?

Ma cosa è cambiato?

Git ha copiato i files nella staging area

Ora i files sono pronti per essere inclusi in un commit

N.B. I files sono stati copiati altrove, se li modifico ulteriormente
dovrò ri-aggiungerli alla staging area ripetendo il comando git add
Commit

Come si crea un commit?

Creiamo effettivamente il commit

git commit

Si aprirà cosi il nostro editor di testo predefinito,
nel quale dovremo scrivere un breve messaggio
nella prima riga da associare al commit

Salviamo il file di testo e il commit è pronto

N.B. di default l'editor di testo che verrà usato in ambiente Linux sarà vi o vim, per modificarlo
Commit

Come si crea un commit?

Ma cosa è successo?

git log
commit aa581d11d4caed7084cd8114d2454d9380acd869 (HEAD -> master)
Author: il_mio_nome <mia_mail@poul.org>
Date:   Sat Aug 31 01:56:49 2019 +0200

Questo è il mio primo commit

Git log permette di visualizzare
tutti i commit che fanno parte del repository

Commit

Posso includere il messaggio
nella linea di comando?

git commit -m "Questo è il mio primo commit"

Con questa sintassi preverremmo
l'apertura dell'editor di testo,
fornendo il messaggio via linea di comando

Attenzione: un messaggio di commit
non dovrebbe superare i 50 caratteri
Commit

Ma cosa include realmente un commit?

Tutti questi elementi concorrono nella creazione
della firma (hash) del commit

Commit

(Altri) punti di forza

Ogni commit contiene l'hash di quello precedente

Modifiche a vecchi commit sono (generalmente) proibite
e facilmente individuabili

Commit

Ma il ctrl+z dov'è finito?

Una volta recuperato l'hash del commit
al quale vogliamo tornare

git reset \-\-hard {target_hash}
N.B. non è necessario tutto l'hash ma è sufficiente la parte iniziale