Git – lo stupido gestore di contenuti

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

Transcript of Git – lo stupido gestore di contenuti

1

GITLO STUPIDO GESTORE DI CONTENUTI

Introduzione & alcuni concetti avanzati

2

GIULIO CACCINSviluppatore dal 2003

.NET / Java

Utilizzo Git dal 2012

Appassionato di diritti umani

3

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

E' uno standard de facto nel settore

Strutturato per favorire la collaborazione

4

UN PO' DI STORIAle esigenze di Linus Torvald

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

5

GRAFO ACICLICO DIRETTOStruttura di nodi

Percorrendo il grafo non si può mai tornare alla partenza

Nessun nodo può essere isolato

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

7

I “TRE” STATI

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          

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          

10

GITFLOW WORKFLOWMaster taggato per versioni rilasciate

Develop per build non stabili

Feature branch

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

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

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

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

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...

15

GIT-GUIMultipiattaforma

Pensato per gestire commit, branch e merge

Permette di fare stage selettivo di linea

16

GITKMultipiattaforma

Pensato per gestire lo storico

Visualizza il grafico dei commit

Permette di fare il blame

[bonus] gitk ‐‐follow nome‐file

17

README.MDConsigliato da GitHub

Presenta il repository

Usa CommonMarkdown

18

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

19

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

20

INTO THE PORCELAINAlcuni esempi pratici

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"

22

GIT STASHPermette di salvare velocemente il proprio lavoro

Lo puoi ri-applicare su qualunque branch

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

24

GIT TAGPermette di etichettare qualunque punto del log

Non viene condiviso se non esplicitato

Riferimento per usare altri comandi

25

GIT RESETRiporta la HEAD allo stato specificato

Usato per togliere dall’index modifiche aggiunte

Usato per cancellare commit non condivisi

26

GIT CLEANPulisce velocemente la working directory

git clean –f –n ‐d

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

28

DETACHED HEADCapita usando le GUI

Indica la working directory staccata da un branch

Aiuta a capire che si potrebbe perdere il lavoro

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

30

“DOMANDE?”@giuliocaccin

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

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