diff --git a/git-crash-course.md b/git-crash-course.md
index 8682df9..1584dbc 100644
--- a/git-crash-course.md
+++ b/git-crash-course.md
@@ -62,7 +62,7 @@ Un sistema di controllo versione distribuito.
Serve per tener traccia dei cambiamenti al proprio codice e per facilitare lo sviluppo condiviso. Va ricordato che Git è nato soprattutto per aiutare chi deve integrare il codice altrui, e non tanto per il singolo sviluppatore.
-Il resto lo spiega meglio Wikipedia: https://it.wikipedia.org/wiki/Git%5F%28software%29
+Il resto [lo spiega meglio Wikipedia](https://it.wikipedia.org/wiki/Git%5F%28software%29).
-----
@@ -146,7 +146,6 @@ Clonare un repository remoto esistente:
### Bonus track
* i repository remoti vengono di norma creati con **--bare** e non hanno working directory
-* si può posizionare la directory .git in un altro path con **--separate-git-dir**
-----
@@ -154,7 +153,7 @@ Clonare un repository remoto esistente:
## Le basi: status
-Vedere lo stato del sistema (usatelo spesso! Guardate anche https://ndpsoftware.com/git-cheatsheet.html ):
+Vedere lo stato del sistema (usatelo spesso! un utile [cheatsheet](https://ndpsoftware.com/git-cheatsheet.html)):
$ git status [-s]
@@ -200,7 +199,8 @@ Abbiamo aggiunto un file alla staging area, per poi salvare uno snapshot del nos
* indovinate cosa fanno **git rm** e **git mv**
* come scrivere un messaggio di commit [che non susciti sgomento](https://chris.beams.io/posts/git-commit/)? Issue, titolo breve, descrizione estesa
-* le directory vuote non vengono salvate; se vi serve, aggiungete un file *.gitkeep* (è solo una convenzione)
+* non salva directory vuote; se servono, aggiungete un file *.gitkeep* (è solo una convenzione)
+* creare un file .gitignore per ignorare certi file
-----
@@ -214,32 +214,16 @@ I commit hash sono generati partendo da: messaggio, committer, author, dates, tr
### Bonus track
-* .gitignore per ignorare certi file
-* è possibile abbreviare gli hash, purché rimangano univoci (e.g. *6d769*).
-* vedere https://blog.thoughtram.io/git/2014/11/18/the-anatomy-of-a-git-commit.html
-* e anche https://git-scm.com/book/it/v2/Git-Internals-Git-References
+* è possibile abbreviare gli hash, purché rimangano univoci (e.g. *6d769*)
+* per dettagli, vedere [anatomy of a Git commit](https://blog.thoughtram.io/git/2014/11/18/the-anatomy-of-a-git-commit.html) e [Git Internals](https://git-scm.com/book/it/v2/Git-Internals-Git-References)
-----
-## Le basi: tag
-
-Un tag è un puntatore ad un commit:
-
- $ git tag -a v1.0
-
-
-
-### Bonus track
-
-* esistono sia i tag *lightweight* che *annotated*. La differenza principale è che i primi sono solo dei puntatori, i secondi sono oggetti completi: hanno un author e possono essere firmati.
-
----
-
## Le basi: la history
$ git log [--stat] [--patch] [--graph] [--decorate] [--color] [-2]
-Rappresenta la storia dei commit fino al punto corrente (o da/a qualsiasi punto indicato).
+Rappresenta la storia dei commit dal punto corrente (o da/a qualsiasi punto indicato) fino al primo commit.
Si può limitare agli ultimi N commit con ***-N***
@@ -258,10 +242,24 @@ Modifichiamo un file, senza aggiungerlo alla staging area:
$ git diff
-Per vedere quanto è stato posto in staging area (e motivo per cui è utile usarla):
+Per vedere quanto è stato posto in staging area (**e motivo per cui è utile usarla**):
$ git diff --staged
+-----
+
+## Le basi: tag
+
+Un tag è un puntatore ad un commit:
+
+ $ git tag -a v1.0
+
+
+
+### Bonus track
+
+* esistono sia i tag *lightweight* che *annotated*. La differenza principale è che i primi sono solo dei puntatori, i secondi sono oggetti completi: hanno un author e possono essere firmati.
+
---
## Aggiustare i danni
@@ -278,6 +276,11 @@ Riportare un file modificato nell'ultimo stato committato/staged:
$ git checkout -- file
+### Bonus track
+
+* notate come il commit ID viene modificato, con *--amend*, motivo per cui è possibile usarlo solo sull'ultimo commit
+* **git clean -f** per rimuovere tutti i file untracked
+
-----
## Aggiustare i danni: più forte
@@ -294,8 +297,8 @@ Voglio creare un nuovo commit che annulla le modifiche introdotte da un commit p
### Bonus track
-* maggiori informazioni sul reset: https://stackoverflow.com/questions/3528245/whats-the-difference-between-git-reset-mixed-soft-and-hard
-* workflow per risolvere problemi: http://justinhileman.info/article/git-pretty/git-pretty.png
+* maggiori [informazioni sul reset](https://stackoverflow.com/questions/3528245/whats-the-difference-between-git-reset-mixed-soft-and-hard)
+* workflow [per risolvere problemi](http://justinhileman.info/article/git-pretty/git-pretty.png)
---
@@ -347,7 +350,7 @@ Creare e spostarsi in un singolo comando:
* **refs**: nome collettivo per riferirsi ad HEAD, branches, tags
-* dare nomi significativi; usate prefissi come *bugfix/*, *fix/*, *improvement/*, *feature/*, *task/*) e issue di riferimento
+* dare [nomi significativi](http://www.guyroutledge.co.uk/blog/git-branch-naming-conventions/); usate prefissi come *bugfix/*, *fix/*, *improvement/*, *feature/*, *task/*) e issue di riferimento
* possono essere logicamente suddivise: *feature* (o *topic*), *release*, *integration* branches e così via
@@ -371,9 +374,9 @@ Creare e spostarsi in un singolo comando:
## Merge: cosa è successo?
-**fast-forward**! master era più indietro rispetto a fix/bug-123, e quindi abbiamo semplicemente spostato il puntatore master.
+**fast-forward**!
-Non è stato neppure creato un nuovo commit.
+master era più indietro rispetto a fix/bug-123, e quindi abbiamo semplicemente spostato il puntatore master. Non è stato neppure creato un nuovo commit.
Il comando commit ha le opzioni **--ff-only** e **--no-ff** per decidere come comportarsi.
@@ -474,7 +477,7 @@ Scaricare gli aggiornamenti dal remoto e mergiare il branch corrente:
* **local tracking branch**: un branch locale su cui è possibile lavorare direttamente, che traccia un altro branch (di norma, un remote tracking branch)
-* l'associazione tra branch remoti e locali viene effettuata in automatico, in base al nome del branch: se nel repository remoto esiste *origin/branch-1*, il comando *git checkout branch-1* crea un local tracking branch che traccia il remote tracking branch *origin/branch-1*
+* il local tracking di branch remoti viene effettuato in automatico, in base al nome del branch: se nel repository remoto esiste *origin/branch-1*, il comando *git checkout branch-1* crea un local tracking branch che traccia il remote tracking branch *origin/branch-1*
-----
@@ -486,7 +489,7 @@ Aggiungere al repository remoto un branch locale:
Inviare i cambiamenti locali ad un branch remoto:
- $ git push --tags [origin [master]]
+ $ git push [--tags] [origin [master]]
@@ -751,7 +754,7 @@ Salire di un livello, seguendo il secondo parent commit (in caso di merge):
-Vedere anche: https://stackoverflow.com/questions/7251477/what-are-the-differences-between-double-dot-and-triple-dot-in-git-dif
+Vedere anche [questa spiegazione](https://stackoverflow.com/questions/7251477/what-are-the-differences-between-double-dot-and-triple-dot-in-git-dif)
---
@@ -849,9 +852,12 @@ Ad esempio quando non si vuole includere in un commit una riga di debug, che per
## Creare e applicare patch
-è possibile creare e riapplicare una patch usando i comandi:
+è possibile creare una patch usando il comando:
$ git format-patch [refs]
+
+per poi applicarla con:
+
$ git apply patch-file.diff
-----
@@ -880,7 +886,7 @@ La history mostra solo i commit inclusi in un branch.
Per vedere TUTTI gli spostamenti di HEAD:
- $ git reflog [--relative-date]
+ $ git reflog [@{2 weeks ago}]
@@ -935,8 +941,10 @@ Per vedere TUTTI gli spostamenti di HEAD:
-### git clone https://git.lattuga.net/alberanid/git-crash-course.git
+**git clone https://git.lattuga.net/alberanid/git-crash-course.git**
+### Davide Alberani
+
-## Davide Alberani
+This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License: http://creativecommons.org/licenses/by-sa/4.0/