SlideShare una empresa de Scribd logo
1 de 82
Descargar para leer sin conexión
Introduzione a GIT
                           Il sistema di Source Control distribuito




PHP User Group Friuli, 27/06/2012
STEFANO VALLE
http://www.mvassociati.it/
http://friuli.grusp.org/
Chi usa GIT?




5
COME SIAMO ARRIVATI A GIT?
7
CVS >> SVN




8
SVN >> GIT




10
Perché è diverso?




11
E’ MOLTO VELOCE
E’ Distribuito




            Pro Git - http://git-scm.com/book
PERMETTE DI LAVORARE OFFLINE
Incoraggia sviluppo non lineare




           Pro Git - http://git-scm.com/book
Come funzionano gli altri?




                Pro Git - http://git-scm.com/book

16
Come funziona GIT?




               Pro Git - http://git-scm.com/book

17
LE BASI
Installare Git
     •   Debian/Ubuntu
         apt-get install git-core
     •   RedHat/Fedora/CentOS
         yum install git


     •   Disponibile per altre distribuzioni e SO:
         http://git-scm.com/downloads



19
Configurare Git
     •   Identità:
         git config --global user.name "John Doe"
         git config --global user.email johndoe@example.com



     •   Editor:
         git config --global core.editor emacs



     •   Verifica parametri:
         git config --list




20
«helper» per la console




21
Disponibili anche GUI




22
PARTIAMO!
init

     •   Inizializza un nuovo repository all’interno
         della cartella corrente
     •   Crea la sottocartella .git che conterrà
         tutti i file ad uso interno di git


24
clone

     •   Clona un repository git esistente




25
add

     •   Aggiunge un nuovo file a git, che da quel
         momento ne terrà traccia
     •   Aggiunge un file modificato all’area di
         staging (che vediamo fra poco)


26
commit

     •   Memorizza lo snapshot delle modifiche
         fatte
     •   Obbligatorio inserire un messaggio
     •   Identificato da hash SHA-1


27
Struttura di un commit




28
Ciclo di vita di un file
                                 Non
       Non gestito                                    Modificato                   In stage
                               modificato



               aggiunta del file
                                       modifica del file


                                                                staging del file


                rimozione del file




                                                           commit




29
status

     •   Mostra lo stato in cui si trovano i file del
         repository




30
log

     •   Mostra la storia dei commit
     •   Per ciascuno elenca autore e messaggio




31
DEMO 1
branch

     •   La killer feature di GIT!
     •   Consente di continuare lo sviluppo su una
         nuova feature senza impattare sul lavoro
         corrente


33
Un po’ di internals




                Pro Git - http://git-scm.com/book

34
git branch testing




                Pro Git - http://git-scm.com/book

35
Su quale branch stiamo lavorando?




                Pro Git - http://git-scm.com/book

36
checkout

     •   Consente di passare da un branch all’altro
     •   (o anche da un commit all’altro)




37
git checkout testing




                Pro Git - http://git-scm.com/book

38
DEMO 2 - BRANCHING
merge

     •   Incorpora sul branch principale le
         modifiche fatte su un altro branch
     •   Assieme a branch, è un altro comando
         che git incentiva ad usare spesso


40
merge

     fast-forward




                Pro Git - http://git-scm.com/book

41
merge
              Non fast-forward




     Pro Git - http://git-scm.com/book

42
DEMO 2 – OPERAZIONI DI MERGE
L’IMPREVISTO: I CONFLITTI
rebase

     •   Altro modo per integrare le modifiche di
         un branch
     •   Prende linearmente tutte le modifiche
         fatte su un branch e le applica ad un altro


45
rebase




     Pro Git - http://git-scm.com/book

46
Merge                                      Rebase

     Prende gli ultimi commit e li              Applica le modifiche di un
     «mette assieme», creando                   branch linearmente su un
     un nuovo commit di merge                   nuovo branch




                           Pro Git - http://git-scm.com/book

47
Git distribuito

                          repository
                          condiviso




        sviluppatore 1   sviluppatore 2   sviluppatore 3




48
remote

     •   Consente di gestire repository remoti
     •   Sincronizzandoli con il proprio repo locale




49
fetch

     •   Scarica branch e dati da un repository
         remoto




50
pull

     •   Scarica dati da un repository remoto e
         tenta di fare il merge con il branch
         corrente
     •   pull = fetch + merge


51
push

     •   Invia branch e dati ad un repository
         remoto
     •   Consente di aggiornare il repository
         remoto con le modifiche fatte localmente


52
DEMO 3 - REBASE
I REPOSITORY PUBBLICI
Github




55
Bitbucket




56
DEMO 4 – GIT WORKFLOW
Premessa
     •   Usate git per qualsiasi progetto
     •   Anche se sviluppate da soli
     •   Anche se lavorate solo in locale




58
Branches




59
Long-running branches
     •   master
         – Allineato con versione on-line


     •   develop
         – Allineato con versione in sviluppo




60
Topic branches
     •   Branch in cui sviluppare feature
     •   Feature terminata (e testata)? merge su
         develop
     •   Al termine, il branch viene cancellato




61
Hotfix branches
     •   Per bug fix / interventi veloci
     •   Fix terminato, merge su develop
     •   Cancellato al termine del merge
     •   Ha una vita molto breve




62
COMANDI UTILI
diff

     •   Mostra le differenze introdotte dalle
         modifiche non committate




64
tag

     •   Consente di contrassegnare un commit
     •   Spesso usato per identificare le versioni
         del progetto



65
stash

     •   Salva temporaneamente il contenuto della
         working directory, ripulendola
     •   Consente di cambiare branch in qualsiasi
         momento


66
reset

     •   Il comando più ambiguo!
     •   Consente di:
         – Togliere file dallo staging
         – Eliminare definitivamente file dallo staging
         – Riavvolgere storia commit

67
revert

     •   Consente di annullare uno o più commit
     •   Crea un nuovo commit che annulla
         l’effetto dei commit da eliminare



68
submodule

     •   Consente di includere un repository git
         all’interno del proprio progetto git
     •   Utile per caricare librerie esterne



69
BEST PRACTICES
Commit
     •   Fare commit spesso
     •   Un commit deve inglobare un insieme
         atomico di modifiche
     •   NON lavorare N giorni in attesa di aver
         finito il task!
     •   Al massimo fare tutti i commit alla fine,
         sfruttando lo staging



71
Testo del commit
     •   Sommario da max 50 caratteri
     •   Seguito (eventualmente) da descrizione
         più dettagliata
     •   Forma imperativa (es. «Add products
         section», ...)




72
COMMIT E PUSH PRIMA DEL COLLEGA!
LAVORARE TUTTI SUL MASTER, HUH?
TESTARE IL CODICE PRIMA DI COMMITTARLO
Decidere un workflow




76
LAVORARE CON GIT E’ PIACEVOLE
Per approfondire:

       •   Pro git: http://git-scm.com/book

       •   http://gitref.org/
       •   http://gitready.com/




78
DUBBI? DOMANDE?
http://www.hubme.in/
Grazie per l’attenzione




Stefano Valle
s.valle@mvassociati.it
@stefanovalle
Referenze Immagini
•   http://www.flickr.com/photos/boston_public_library/6323438849 /
•   http://www.flickr.com/photos/a03575/3632344397 /
•   http://www.flickr.com/photos/chiperoni/3456589962/
•   http://www.flickr.com/photos/53370644@ N06/4976492450
•   http://www.flickr.com/photos/lululemonathletica/4911299076/
•   http://www.flickr.com/photos/psi_mon/3473153641/
•   http://www.flickr.com/photos/masstravel/7454482646/
•   http://www.flickr.com/photos/53370644@ N06/4976497160/
•   http://www.flickr.com/photos/53370644@ N06/4975888229/
•   http://www.flickr.com/photos/53370644@ N06/4976490816/
•   http://www.flickr.com/photos/visualgrammar/2997271008/
•   http://www.flickr.com/photos/ejcdelahoya/2504629292 /
•   http://www.flickr.com/photos/altuwa/3582839737
•   http://www.flickr.com/photos/marine_corps/5132830788/
•   http://www.flickr.com/photos/72213316@ N00/5028110521/
•   http://www.flickr.com/photos/stevengrayphotography/6893446706/

Más contenido relacionado

La actualidad más candente

Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션
Dabi Ahn
 
Git et les systèmes de gestion de versions
Git et les systèmes de gestion de versionsGit et les systèmes de gestion de versions
Git et les systèmes de gestion de versions
Alice Loeser
 

La actualidad más candente (20)

Intro to Git and GitHub
Intro to Git and GitHubIntro to Git and GitHub
Intro to Git and GitHub
 
Programmazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaProgrammazione funzionale e Stream in Java
Programmazione funzionale e Stream in Java
 
git and github
git and githubgit and github
git and github
 
Advanced Git Presentation By Swawibe
Advanced Git Presentation By SwawibeAdvanced Git Presentation By Swawibe
Advanced Git Presentation By Swawibe
 
Introducing GitLab (September 2018)
Introducing GitLab (September 2018)Introducing GitLab (September 2018)
Introducing GitLab (September 2018)
 
Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션Git 기본개념과 사용법 그리고 어플리케이션
Git 기본개념과 사용법 그리고 어플리케이션
 
Git and git flow
Git and git flowGit and git flow
Git and git flow
 
git, 이해부터 활용까지
git, 이해부터 활용까지git, 이해부터 활용까지
git, 이해부터 활용까지
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)
 
Git One Day Training Notes
Git One Day Training NotesGit One Day Training Notes
Git One Day Training Notes
 
Learning git
Learning gitLearning git
Learning git
 
Git et les systèmes de gestion de versions
Git et les systèmes de gestion de versionsGit et les systèmes de gestion de versions
Git et les systèmes de gestion de versions
 
Git training v10
Git training v10Git training v10
Git training v10
 
Git Series. Episode 3. Git Flow and Github-Flow
Git Series. Episode 3. Git Flow and Github-FlowGit Series. Episode 3. Git Flow and Github-Flow
Git Series. Episode 3. Git Flow and Github-Flow
 
Git commands
Git commandsGit commands
Git commands
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
 
Git
GitGit
Git
 
Git - An Introduction
Git - An IntroductionGit - An Introduction
Git - An Introduction
 
Advanced Git Tutorial
Advanced Git TutorialAdvanced Git Tutorial
Advanced Git Tutorial
 
Intro to git and git hub
Intro to git and git hubIntro to git and git hub
Intro to git and git hub
 

Destacado

Introduzione a GIT - Laboratorio di Web Design 2014/15
Introduzione a GIT - Laboratorio di Web Design 2014/15Introduzione a GIT - Laboratorio di Web Design 2014/15
Introduzione a GIT - Laboratorio di Web Design 2014/15
Giovanni Buffa
 
Sys05 uso consapevole di git - beyond the basic
Sys05   uso consapevole di git - beyond the basicSys05   uso consapevole di git - beyond the basic
Sys05 uso consapevole di git - beyond the basic
DotNetCampus
 

Destacado (20)

La filosofia Lean nello sviluppo di prodotti digitali
La filosofia Lean nello sviluppo di prodotti digitaliLa filosofia Lean nello sviluppo di prodotti digitali
La filosofia Lean nello sviluppo di prodotti digitali
 
Stime e preventivi in un contesto di sviluppo agile
Stime e preventivi in un contesto di sviluppo agileStime e preventivi in un contesto di sviluppo agile
Stime e preventivi in un contesto di sviluppo agile
 
Moduli su Zend Framework 2: come sfruttarli
Moduli su Zend Framework 2: come sfruttarliModuli su Zend Framework 2: come sfruttarli
Moduli su Zend Framework 2: come sfruttarli
 
Introduzione a GIT - Laboratorio di Web Design 2014/15
Introduzione a GIT - Laboratorio di Web Design 2014/15Introduzione a GIT - Laboratorio di Web Design 2014/15
Introduzione a GIT - Laboratorio di Web Design 2014/15
 
Sys05 uso consapevole di git - beyond the basic
Sys05   uso consapevole di git - beyond the basicSys05   uso consapevole di git - beyond the basic
Sys05 uso consapevole di git - beyond the basic
 
GitSlides
GitSlidesGitSlides
GitSlides
 
GITT (part 1 of 2)
GITT (part 1 of 2)GITT (part 1 of 2)
GITT (part 1 of 2)
 
Git–SVN
Git–SVNGit–SVN
Git–SVN
 
Perchè Git?
Perchè Git?Perchè Git?
Perchè Git?
 
Linux Day 2015 Genova
Linux Day 2015 GenovaLinux Day 2015 Genova
Linux Day 2015 Genova
 
Introduzione a git
Introduzione a gitIntroduzione a git
Introduzione a git
 
Git best practices
Git best practicesGit best practices
Git best practices
 
Git e Git Flow
Git e Git Flow Git e Git Flow
Git e Git Flow
 
Mini git tutorial
Mini git tutorialMini git tutorial
Mini git tutorial
 
Anatomia di un progetto open-source
Anatomia di un progetto open-sourceAnatomia di un progetto open-source
Anatomia di un progetto open-source
 
Controllo di versione e Git
Controllo di versione e GitControllo di versione e Git
Controllo di versione e Git
 
Git基礎介紹
Git基礎介紹Git基礎介紹
Git基礎介紹
 
Git in a nutshell
Git in a nutshellGit in a nutshell
Git in a nutshell
 
Git for dummies
Git for dummiesGit for dummies
Git for dummies
 
Git 101 Presentation
Git 101 PresentationGit 101 Presentation
Git 101 Presentation
 

Similar a Introduzione a Git

Git Flow - Un modello di branching che funziona
Git Flow - Un modello di branching che funzionaGit Flow - Un modello di branching che funziona
Git Flow - Un modello di branching che funziona
Innoteam Srl
 
Corso Python Deltapromo - Lezione 3
Corso Python Deltapromo - Lezione 3Corso Python Deltapromo - Lezione 3
Corso Python Deltapromo - Lezione 3
Paolo Ferretti
 
Introduzione a git
Introduzione a gitIntroduzione a git
Introduzione a git
rpanfili
 

Similar a Introduzione a Git (20)

Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
 
Introduzione a Git e GitLab
Introduzione a Git e GitLabIntroduzione a Git e GitLab
Introduzione a Git e GitLab
 
Emerasoft Git quickstart
Emerasoft Git quickstartEmerasoft Git quickstart
Emerasoft Git quickstart
 
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
 
Git
GitGit
Git
 
Introduzione a git
Introduzione a gitIntroduzione a git
Introduzione a git
 
Revisionare, tracciare, collaborare. Version control con git
Revisionare, tracciare, collaborare. Version control con gitRevisionare, tracciare, collaborare. Version control con git
Revisionare, tracciare, collaborare. Version control con git
 
Xamarin DevOps
Xamarin DevOpsXamarin DevOps
Xamarin DevOps
 
Git Flow - Un modello di branching che funziona
Git Flow - Un modello di branching che funzionaGit Flow - Un modello di branching che funziona
Git Flow - Un modello di branching che funziona
 
Corso Python Deltapromo - Lezione 3
Corso Python Deltapromo - Lezione 3Corso Python Deltapromo - Lezione 3
Corso Python Deltapromo - Lezione 3
 
Chi ha paura di Github? Conosciamolo meglio!
Chi ha paura di Github? Conosciamolo meglio!Chi ha paura di Github? Conosciamolo meglio!
Chi ha paura di Github? Conosciamolo meglio!
 
Introduzione a git
Introduzione a gitIntroduzione a git
Introduzione a git
 
Git
GitGit
Git
 
Corso di Versioning, Configuration & Document Management
Corso di Versioning, Configuration & Document ManagementCorso di Versioning, Configuration & Document Management
Corso di Versioning, Configuration & Document Management
 
Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2
 
Linux & Tools: per la piccola azienda e i freelance
Linux & Tools: per la piccola azienda e i freelanceLinux & Tools: per la piccola azienda e i freelance
Linux & Tools: per la piccola azienda e i freelance
 
Git gestione comoda del repository
Git   gestione comoda del repositoryGit   gestione comoda del repository
Git gestione comoda del repository
 
Git: un'introduzione pratica
Git: un'introduzione praticaGit: un'introduzione pratica
Git: un'introduzione pratica
 
Git – lo stupido gestore di contenuti
Git – lo stupido gestore di contenutiGit – lo stupido gestore di contenuti
Git – lo stupido gestore di contenuti
 
Gitt (part 2 of 2)
Gitt (part 2 of 2)Gitt (part 2 of 2)
Gitt (part 2 of 2)
 

Más de Stefano Valle

Más de Stefano Valle (6)

IoT: protocolli, dispositivi, architetture
IoT: protocolli, dispositivi, architettureIoT: protocolli, dispositivi, architetture
IoT: protocolli, dispositivi, architetture
 
Protocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTT
Protocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTTProtocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTT
Protocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTT
 
Instant ACLs with Zend Framework 2
Instant ACLs with Zend Framework 2Instant ACLs with Zend Framework 2
Instant ACLs with Zend Framework 2
 
NoSQL Containers get Rich
NoSQL Containers get RichNoSQL Containers get Rich
NoSQL Containers get Rich
 
Asset management with Zend Framework 2
Asset management with Zend Framework 2Asset management with Zend Framework 2
Asset management with Zend Framework 2
 
Introduzione alle metodologie di sviluppo agile
Introduzione alle metodologie di sviluppo agileIntroduzione alle metodologie di sviluppo agile
Introduzione alle metodologie di sviluppo agile
 

Introduzione a Git

  • 1. Introduzione a GIT Il sistema di Source Control distribuito PHP User Group Friuli, 27/06/2012
  • 7. 7
  • 9.
  • 13. E’ Distribuito Pro Git - http://git-scm.com/book
  • 15. Incoraggia sviluppo non lineare Pro Git - http://git-scm.com/book
  • 16. Come funzionano gli altri? Pro Git - http://git-scm.com/book 16
  • 17. Come funziona GIT? Pro Git - http://git-scm.com/book 17
  • 19. Installare Git • Debian/Ubuntu apt-get install git-core • RedHat/Fedora/CentOS yum install git • Disponibile per altre distribuzioni e SO: http://git-scm.com/downloads 19
  • 20. Configurare Git • Identità: git config --global user.name "John Doe" git config --global user.email johndoe@example.com • Editor: git config --global core.editor emacs • Verifica parametri: git config --list 20
  • 21. «helper» per la console 21
  • 24. init • Inizializza un nuovo repository all’interno della cartella corrente • Crea la sottocartella .git che conterrà tutti i file ad uso interno di git 24
  • 25. clone • Clona un repository git esistente 25
  • 26. add • Aggiunge un nuovo file a git, che da quel momento ne terrà traccia • Aggiunge un file modificato all’area di staging (che vediamo fra poco) 26
  • 27. commit • Memorizza lo snapshot delle modifiche fatte • Obbligatorio inserire un messaggio • Identificato da hash SHA-1 27
  • 28. Struttura di un commit 28
  • 29. Ciclo di vita di un file Non Non gestito Modificato In stage modificato aggiunta del file modifica del file staging del file rimozione del file commit 29
  • 30. status • Mostra lo stato in cui si trovano i file del repository 30
  • 31. log • Mostra la storia dei commit • Per ciascuno elenca autore e messaggio 31
  • 33. branch • La killer feature di GIT! • Consente di continuare lo sviluppo su una nuova feature senza impattare sul lavoro corrente 33
  • 34. Un po’ di internals Pro Git - http://git-scm.com/book 34
  • 35. git branch testing Pro Git - http://git-scm.com/book 35
  • 36. Su quale branch stiamo lavorando? Pro Git - http://git-scm.com/book 36
  • 37. checkout • Consente di passare da un branch all’altro • (o anche da un commit all’altro) 37
  • 38. git checkout testing Pro Git - http://git-scm.com/book 38
  • 39. DEMO 2 - BRANCHING
  • 40. merge • Incorpora sul branch principale le modifiche fatte su un altro branch • Assieme a branch, è un altro comando che git incentiva ad usare spesso 40
  • 41. merge fast-forward Pro Git - http://git-scm.com/book 41
  • 42. merge Non fast-forward Pro Git - http://git-scm.com/book 42
  • 43. DEMO 2 – OPERAZIONI DI MERGE
  • 45. rebase • Altro modo per integrare le modifiche di un branch • Prende linearmente tutte le modifiche fatte su un branch e le applica ad un altro 45
  • 46. rebase Pro Git - http://git-scm.com/book 46
  • 47. Merge Rebase Prende gli ultimi commit e li Applica le modifiche di un «mette assieme», creando branch linearmente su un un nuovo commit di merge nuovo branch Pro Git - http://git-scm.com/book 47
  • 48. Git distribuito repository condiviso sviluppatore 1 sviluppatore 2 sviluppatore 3 48
  • 49. remote • Consente di gestire repository remoti • Sincronizzandoli con il proprio repo locale 49
  • 50. fetch • Scarica branch e dati da un repository remoto 50
  • 51. pull • Scarica dati da un repository remoto e tenta di fare il merge con il branch corrente • pull = fetch + merge 51
  • 52. push • Invia branch e dati ad un repository remoto • Consente di aggiornare il repository remoto con le modifiche fatte localmente 52
  • 53. DEMO 3 - REBASE
  • 57. DEMO 4 – GIT WORKFLOW
  • 58. Premessa • Usate git per qualsiasi progetto • Anche se sviluppate da soli • Anche se lavorate solo in locale 58
  • 60. Long-running branches • master – Allineato con versione on-line • develop – Allineato con versione in sviluppo 60
  • 61. Topic branches • Branch in cui sviluppare feature • Feature terminata (e testata)? merge su develop • Al termine, il branch viene cancellato 61
  • 62. Hotfix branches • Per bug fix / interventi veloci • Fix terminato, merge su develop • Cancellato al termine del merge • Ha una vita molto breve 62
  • 64. diff • Mostra le differenze introdotte dalle modifiche non committate 64
  • 65. tag • Consente di contrassegnare un commit • Spesso usato per identificare le versioni del progetto 65
  • 66. stash • Salva temporaneamente il contenuto della working directory, ripulendola • Consente di cambiare branch in qualsiasi momento 66
  • 67. reset • Il comando più ambiguo! • Consente di: – Togliere file dallo staging – Eliminare definitivamente file dallo staging – Riavvolgere storia commit 67
  • 68. revert • Consente di annullare uno o più commit • Crea un nuovo commit che annulla l’effetto dei commit da eliminare 68
  • 69. submodule • Consente di includere un repository git all’interno del proprio progetto git • Utile per caricare librerie esterne 69
  • 71. Commit • Fare commit spesso • Un commit deve inglobare un insieme atomico di modifiche • NON lavorare N giorni in attesa di aver finito il task! • Al massimo fare tutti i commit alla fine, sfruttando lo staging 71
  • 72. Testo del commit • Sommario da max 50 caratteri • Seguito (eventualmente) da descrizione più dettagliata • Forma imperativa (es. «Add products section», ...) 72
  • 73. COMMIT E PUSH PRIMA DEL COLLEGA!
  • 74. LAVORARE TUTTI SUL MASTER, HUH?
  • 75. TESTARE IL CODICE PRIMA DI COMMITTARLO
  • 77. LAVORARE CON GIT E’ PIACEVOLE
  • 78. Per approfondire: • Pro git: http://git-scm.com/book • http://gitref.org/ • http://gitready.com/ 78
  • 81. Grazie per l’attenzione Stefano Valle s.valle@mvassociati.it @stefanovalle
  • 82. Referenze Immagini • http://www.flickr.com/photos/boston_public_library/6323438849 / • http://www.flickr.com/photos/a03575/3632344397 / • http://www.flickr.com/photos/chiperoni/3456589962/ • http://www.flickr.com/photos/53370644@ N06/4976492450 • http://www.flickr.com/photos/lululemonathletica/4911299076/ • http://www.flickr.com/photos/psi_mon/3473153641/ • http://www.flickr.com/photos/masstravel/7454482646/ • http://www.flickr.com/photos/53370644@ N06/4976497160/ • http://www.flickr.com/photos/53370644@ N06/4975888229/ • http://www.flickr.com/photos/53370644@ N06/4976490816/ • http://www.flickr.com/photos/visualgrammar/2997271008/ • http://www.flickr.com/photos/ejcdelahoya/2504629292 / • http://www.flickr.com/photos/altuwa/3582839737 • http://www.flickr.com/photos/marine_corps/5132830788/ • http://www.flickr.com/photos/72213316@ N00/5028110521/ • http://www.flickr.com/photos/stevengrayphotography/6893446706/

Notas del editor

  1. Intro + sondaggio
  2. 1 o 2 ordini di grandezza più veloce di SVN
  3. L’intero repo si trova in tutti nella macchina di ogni sviluppatore
  4. Quasi tutte le operazioni sono localiLa clonazione del repo (operazione più lenta) scarica tutti i dati e tutta la storia
  5. Si adatta alla realtà fatta di interruzioni, fix da fare velocemente, lavoro in parallelo da parte di più sviluppatori
  6. Mantengono i delta
  7. Commit sono snapshots, i file modificati vengono copiati, i file non modificati mantengono la stessa referenza
  8. Anche per windows
  9. Si parte da qui per continuare a lavorare su un repo già fatto o per contribuire ad un progetto
  10. Doppia funzione
  11. git log --pretty=oneline
  12. Capiamo come funziona per comprendere perchè è così veloce e quindi perchè ha senso usare branch senza paura
  13. Definire fast-forward
  14. Quasi tutte le operazioni sono localiLa clonazione del repo (operazione più lenta) scarica tutti i dati e tutta la storia
  15. Esempi non ffVantaggi rebase: mantiene la storia dei commit lineareNon facciamo ora esemi, eventualmente alla fine a richiesta
  16. git remote –vcgit remote add githubgit@github.com:schacon/hw.git
  17. Quasi tutte le operazioni sono localiLa clonazione del repo (operazione più lenta) scarica tutti i dati e tutta la storia
  18. L’undo dello sviluppatore
  19. A cui aggiungere eventualmente branch di hotfixPer semplificare si può togliere branch develop
  20. Git fa cancellare solo branch completamente mergeati
  21. Non in stage: git diffIn stage: git diff --cachedEntrambe: git diff HEADSpecifico commit: git diff [commit]
  22. git tag –a [tagname] >> per annotated tagsgit push –taggit checkout [tagname]
  23. git stashgit stash listgit stash apply
  24. Rimuovere da staging: git reset HEAD o git reset HEAD – [nomefile]Differenze -- soft, -- hard
  25. Perlomeno su branch pubblici
  26. Come coding conventionsgitflow