Top Banner
1 GIT LO STUPIDO GESTORE DI CONTENUTI Introduzione & alcuni concetti avanzati
32

Git – lo stupido gestore di contenuti

Apr 14, 2017

Download

Software

Giulio Caccin
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Git – lo stupido gestore di contenuti

1

GITLO STUPIDO GESTORE DI CONTENUTI

Introduzione & alcuni concetti avanzati

Page 2: Git – lo stupido gestore di contenuti

2

GIULIO CACCINSviluppatore dal 2003

.NET / Java

Utilizzo Git dal 2012

Appassionato di diritti umani

Page 3: Git – lo stupido gestore di contenuti

3

PERCHÉ GIT?So ware libero (senza restrizioni di utilizzo)

E' uno standard de facto nel settore

Strutturato per favorire la collaborazione

Page 4: Git – lo stupido gestore di contenuti

4

UN PO' DI STORIAle esigenze di Linus Torvald

Veloce (in locale e in rete)DistribuitoFlessibileSicuroAvere i codici sorgenti

Page 5: Git – lo stupido gestore di contenuti

5

GRAFO ACICLICO DIRETTOStruttura di nodi

Percorrendo il grafo non si può mai tornare alla partenza

Nessun nodo può essere isolato

Page 6: Git – lo stupido gestore di contenuti

6

UN COMMIT (NON) È PER SEMPRECommit spesso, fin da subito

Ogni commit rappresenta una idea o un cambiamento

Prima del push ci si può sbizzarrire

Si può riscrivere la storia dei commit locali

Page 7: Git – lo stupido gestore di contenuti

7

I “TRE” STATI

Page 8: Git – lo stupido gestore di contenuti

8

CENTRALIZED WORKFLOWIl più vecchio metodo, si lavora solo su master

Si applicano le nuove modifiche sempre in cima alle vecchie

La storia viene mantenuta solo dai commit

      E­­­F­­­G  *E­­­F­­­G master      /           /     A­­­B­­­C­­­D master          

Page 9: Git – lo stupido gestore di contenuti

9

FEATURE BRANCH WORKFLOWOgni feature viene sviluppata su un branch

Ogni branch viene innestato sul master mantenendo lastoria separata

      E­­­F­­­G branch      /         \     A­­­B­­­C­­­# master          

Page 10: Git – lo stupido gestore di contenuti

10

GITFLOW WORKFLOWMaster taggato per versioni rilasciate

Develop per build non stabili

Feature branch

        #­­­# branch        /     \     ­­#­­­#­­­#­­­#­­­ develop      /         \     #­­­­­­­­­­­#­­­ master          

Page 11: Git – lo stupido gestore di contenuti

11

FORKING WORKFLOWLo sviluppatore ha un repo locale e uno pubblico

Ogni repo pubblico punta allo stesso repo centrale

Un mantainer ha i diritti di scrittura sul repo principale

Page 12: Git – lo stupido gestore di contenuti

12

GITHUB FLOWIl più leggero: solo master e branch

Alla fine dello sviluppo si apre una pull request

Vengono implementate le modifiche

Viene prima deployato e poi mergiato in master

Page 13: Git – lo stupido gestore di contenuti

13

PERCHÉ LA LINEA DI COMANDO?Si possono usare tutti i comandi di Git

Permette di capire tutte le GUI più velocemente

Viene installata con tutte le GUI in tutte le piattaforme

Update più frequenti

Page 14: Git – lo stupido gestore di contenuti

14

GIT E WINDOWSRiga di comando semplice (CONSIGLIATO!)

Interfaccia grafica potente

Emulatore di console (da usare con git-for-windows)

https://git-for-windows.github.io/

https://www.sourcetreeapp.com/

https://conemu.github.io/

Ma la linea di comando offre alcune sorprese...

Page 15: Git – lo stupido gestore di contenuti

15

GIT-GUIMultipiattaforma

Pensato per gestire commit, branch e merge

Permette di fare stage selettivo di linea

Page 16: Git – lo stupido gestore di contenuti

16

GITKMultipiattaforma

Pensato per gestire lo storico

Visualizza il grafico dei commit

Permette di fare il blame

[bonus] gitk ‐‐follow nome‐file

Page 17: Git – lo stupido gestore di contenuti

17

README.MDConsigliato da GitHub

Presenta il repository

Usa CommonMarkdown

Page 18: Git – lo stupido gestore di contenuti

18

I COMANDI PIÙ USATIgit addgit diffgit branchgit pushgit statusgit commitgit checkoutgit pullgit log

Page 19: Git – lo stupido gestore di contenuti

19

ALTRI COMANDIgit clonegit [command] ‐‐help / git help [command]git show [object]git config

Page 20: Git – lo stupido gestore di contenuti

20

INTO THE PORCELAINAlcuni esempi pratici

Page 21: Git – lo stupido gestore di contenuti

21

GIT CONFIGGestisce configurazioni per

macchina (system), utente (global) e repository (local)

Con credential.helper=manager usa le credenziali diwindows

[bonus] crea i tuoi alias

git config ‐‐global alias.grog "log ‐‐all ‐‐decorate ‐‐graph ‐‐oneline"

Page 22: Git – lo stupido gestore di contenuti

22

GIT STASHPermette di salvare velocemente il proprio lavoro

Lo puoi ri-applicare su qualunque branch

Page 23: Git – lo stupido gestore di contenuti

23

“PULL” VS “FETCH&MERGE”pull esegue in contemporanea fetch e merge

eseguiti separatamente permettono di capire cosa èsuccesso in remoto

indispensabile se si usa rebase o push --force

Page 24: Git – lo stupido gestore di contenuti

24

GIT TAGPermette di etichettare qualunque punto del log

Non viene condiviso se non esplicitato

Riferimento per usare altri comandi

Page 25: Git – lo stupido gestore di contenuti

25

GIT RESETRiporta la HEAD allo stato specificato

Usato per togliere dall’index modifiche aggiunte

Usato per cancellare commit non condivisi

Page 26: Git – lo stupido gestore di contenuti

26

GIT CLEANPulisce velocemente la working directory

git clean –f –n ‐d

Page 27: Git – lo stupido gestore di contenuti

27

GIT REBASEDa usare con molta attenzione

Rende più leggibile la storia

Sconsigliato in commit già condivisi

Aiuta i mantainer perchè i conflitti vengono risolti prima

Page 28: Git – lo stupido gestore di contenuti

28

DETACHED HEADCapita usando le GUI

Indica la working directory staccata da un branch

Aiuta a capire che si potrebbe perdere il lavoro

Page 29: Git – lo stupido gestore di contenuti

29

BREVE STORIA SULLA SICUREZZA

git commit ­a ­m "HeHeHe" ­­author "Chuck Norris <[email protected]>"

Ogni commit ha un committer (account usato) e un author

In contesti dove la sicurezza è necessaria potrebbe esserenecessario usare firme GPG

Page 30: Git – lo stupido gestore di contenuti

30

“DOMANDE?”@giuliocaccin

Page 31: Git – lo stupido gestore di contenuti

31

LINK UTILILa bibbia

Imparare dai maestri

Visual cheatsheet

https://git-scm.com/book/en/v2

https://help.github.com/

http://ndpso ware.com/git-cheatsheet.html

Page 32: Git – lo stupido gestore di contenuti

32

DOVE HO RUBATOVideo fantastico di Lorna MitchellImportante articolo sui commitGuida sui flussi di lavoro di AtlassianIndispensabile GitHub FlowFirmate con GPG i vostri commit Git