diff --git a/git-crash-course.md b/git-crash-course.md index 7d5f976..36f243d 100644 --- a/git-crash-course.md +++ b/git-crash-course.md @@ -50,6 +50,7 @@ Il resto lo spiega meglio Wikipedia: https://it.wikipedia.org/wiki/Git%5F%28soft * non è Subversion o CVS * non è un sistema di backup +* un sistema per fare deploy (o magari sì, ma rifletteteci) ----- @@ -57,7 +58,7 @@ Il resto lo spiega meglio Wikipedia: https://it.wikipedia.org/wiki/Git%5F%28soft *Git non avrà segreti per voi, una volta compreso...* -* ...il data model (objects, trees, commits, refs, tags, ...) +* ...il data model (objects, blobs, trees, commits, refs, tags, ...) * ...il fatto che tutto è locale * ...che i commit sono in realtà snapshot, e non delta rispetto allo stato precedente * ...una qualche astrusa teoria a caso @@ -82,7 +83,7 @@ Tutto vero, ma la sua user interface è un mezzo disastro. --- -## Le basi: prepariamoci +## Le basi: prepariamo l'ambieo l'ambiente $ git config --global user.name "Davide Alberani" $ git config --global user.email da@erlug.linux.it @@ -118,7 +119,7 @@ Clonare un repository remoto esistente: ### Bonus track -* i repository remoti vengono creati con **--bare** e sono privi di working directory +* 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** --- @@ -155,6 +156,8 @@ Committiamolo: ----- +## Le basi: add e commit +
### Cosa è successo? @@ -183,7 +186,7 @@ I commit hash sono generati partendo da: messaggio, committer, author, dates, tr ### Bonus track * .gitignore per ignorare certi file -* è possibile abbreviarli, purché rimangano univoci. +* è possibile abbreviare gli hash, purché rimangano univoci. * 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 @@ -205,9 +208,9 @@ Un tag è un puntatore ad un commit: ## Le basi: la history - $ git log [--stat] [-p] [--graph] [--decorate] [--color] [-2] + $ git log [--stat] [--patch] [--graph] [--decorate] [--color] [-2] -Rappresenta la storia dei commit dal punto corrente (o da/a qualsiasi punto indicato). +Rappresenta la storia dei commit fino al punto corrente (o da/a qualsiasi punto indicato). Si può limitare agli ultimi N commit con **-N** @@ -264,6 +267,10 @@ Riportare un file modificato nell'ultimo stato committato/staged: $ git checkout -- file +----- + +## Aggiustare i danni: più forte + Ho fatto un casino nella working directory. Riportiamo tutto allo stato dell'ultimo commit: $ git reset --hard HEAD @@ -292,11 +299,15 @@ Eliminarne uno: $ git stash drop stash@{0} +## Quando usarlo? + +Ad esempio quando vogliamo passare ad un altro branch, accantonando le modifiche nella working directory. + --- ## Storico dei cambiamenti: reflog -La history mostra solo i commit incluse in in branch. +La history mostra solo i commit inclusi in un branch. Per vedere tutto ciò che è successo: @@ -319,7 +330,7 @@ Servono a separare diversi filoni di sviluppo e ad integrare i contributi di alt ----- -## Branches: sperimentiamo! +## Branches: creazione Creare un branch: @@ -333,6 +344,10 @@ Cancellare un branch locale: $ git branch -d [--force] fix/bug-123 +----- + +## Branches: spostiamoci + Spostarsi su un branch: $ git checkout fix/bug-123 @@ -347,7 +362,7 @@ Creare e spostarsi in un singolo comando: * **master** è solamente un default -* fate caso all'asterisco, è il branch corrente +* fate caso all'asterisco: è il branch corrente * dare nomi significativi; prefissi: bugfix/, fix/, improvement/, feature/, task/ @@ -359,7 +374,7 @@ Creare e spostarsi in un singolo comando: --- -## Spostarsi +## Spostarsi tra i commit Salire di 3 livelli, seguendo sempre il primo parent commit (in caso di merge): @@ -375,7 +390,7 @@ Salire di un livello, seguendo il secondo parent commit (in caso di merge): * cosa è HEAD: reference al branch (o commit) corrente * questi operatori sono concatenabili: HEAD~~^2 -* double/tripe dot ranges: git log master..branch; git log --left-right master...branch +* double/tripe dot ranges: git log master..branch; git log --left-right master...branch: https://stackoverflow.com/questions/7251477/what-are-the-differences-between-double-dot-and-triple-dot-in-git-dif --- @@ -394,7 +409,7 @@ Partendo da master: ### Cosa è successo? -fast-forward! master era più indietro rispetto a fix/bug-123, e quindi abbiamo semplicemente spostato master. +fast-forward! master era più indietro rispetto a fix/bug-123, e quindi abbiamo semplicemente spostato il puntatore master. Non è stato neppure creato un nuovo commit. @@ -481,7 +496,7 @@ Tutti i commit specifici di fix/bug-123 sono cambiati. ### Quando usarlo? -A spostare più commit e/o a porsi nella condizione di fare un merge pulito, mantenendo una history lineare. +Quando dovete spostare più commit e/o per porvi nella condizione di fare un merge pulito, mantenendo una history lineare.
@@ -575,14 +590,12 @@ Questo perché se qualcuno sta lavorando sullo stesso branch remoto, romperete t ## Idee sparse -Gestire file grandi: -* https://git-lfs.github.com/ -* https://git-annex.branchable.com/ +* gestire file grandi: https://git-lfs.github.com/ +* gestire file grandi (alternativa): https://git-annex.branchable.com/ +* gestire la propria directory /etc: etckeeper +* gestire repository multipli: https://source.android.com/source/using-repo -Gestire la propria directory /etc: -* etckeeper - -
+----- ## Pezzi mancanti