Introduzione a Git
Upcoming SlideShare
Loading in...5
×
 

Introduzione a Git

on

  • 1,215 views

Presentazione su Git tenuta all'incontro del PHP Users Group Friuli il 27/06/2012

Presentazione su Git tenuta all'incontro del PHP Users Group Friuli il 27/06/2012

Statistics

Views

Total Views
1,215
Views on SlideShare
1,188
Embed Views
27

Actions

Likes
4
Downloads
20
Comments
1

3 Embeds 27

http://www.dev.mvassociati.it 16
https://twitter.com 10
http://www.slashdocs.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

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

Introduzione a Git Introduzione a Git Presentation Transcript

  • Introduzione a GIT Il sistema di Source Control distribuitoPHP 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 >> SVN8
  • SVN >> GIT10
  • 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/book16
  • Come funziona GIT? Pro Git - http://git-scm.com/book17
  • 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/downloads19
  • 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 --list20
  • «helper» per la console21
  • Disponibili anche GUI22
  • PARTIAMO!
  • init • Inizializza un nuovo repository all’interno della cartella corrente • Crea la sottocartella .git che conterrà tutti i file ad uso interno di git24
  • clone • Clona un repository git esistente25
  • 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-127
  • Struttura di un commit28
  • 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 commit29
  • status • Mostra lo stato in cui si trovano i file del repository30
  • log • Mostra la storia dei commit • Per ciascuno elenca autore e messaggio31
  • DEMO 1
  • branch • La killer feature di GIT! • Consente di continuare lo sviluppo su una nuova feature senza impattare sul lavoro corrente33
  • Un po’ di internals Pro Git - http://git-scm.com/book34
  • git branch testing Pro Git - http://git-scm.com/book35
  • Su quale branch stiamo lavorando? Pro Git - http://git-scm.com/book36
  • 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/book38
  • 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 spesso40
  • merge fast-forward Pro Git - http://git-scm.com/book41
  • merge Non fast-forward Pro Git - http://git-scm.com/book42
  • 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 altro45
  • rebase Pro Git - http://git-scm.com/book46
  • 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/book47
  • Git distribuito repository condiviso sviluppatore 1 sviluppatore 2 sviluppatore 348
  • remote • Consente di gestire repository remoti • Sincronizzandoli con il proprio repo locale49
  • fetch • Scarica branch e dati da un repository remoto50
  • pull • Scarica dati da un repository remoto e tenta di fare il merge con il branch corrente • pull = fetch + merge51
  • push • Invia branch e dati ad un repository remoto • Consente di aggiornare il repository remoto con le modifiche fatte localmente52
  • DEMO 3 - REBASE
  • I REPOSITORY PUBBLICI
  • Github55
  • Bitbucket56
  • DEMO 4 – GIT WORKFLOW
  • Premessa • Usate git per qualsiasi progetto • Anche se sviluppate da soli • Anche se lavorate solo in locale58
  • Branches59
  • Long-running branches • master – Allineato con versione on-line • develop – Allineato con versione in sviluppo60
  • Topic branches • Branch in cui sviluppare feature • Feature terminata (e testata)? merge su develop • Al termine, il branch viene cancellato61
  • Hotfix branches • Per bug fix / interventi veloci • Fix terminato, merge su develop • Cancellato al termine del merge • Ha una vita molto breve62
  • COMANDI UTILI
  • diff • Mostra le differenze introdotte dalle modifiche non committate64
  • tag • Consente di contrassegnare un commit • Spesso usato per identificare le versioni del progetto65
  • stash • Salva temporaneamente il contenuto della working directory, ripulendola • Consente di cambiare branch in qualsiasi momento66
  • reset • Il comando più ambiguo! • Consente di: – Togliere file dallo staging – Eliminare definitivamente file dallo staging – Riavvolgere storia commit67
  • revert • Consente di annullare uno o più commit • Crea un nuovo commit che annulla l’effetto dei commit da eliminare68
  • submodule • Consente di includere un repository git all’interno del proprio progetto git • Utile per caricare librerie esterne69
  • 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 staging71
  • 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 workflow76
  • 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’attenzioneStefano Valles.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/