Emerasoft Git quickstart

1,350 views

Published on

Breve panoramica sul sistema di Configuration Management Git.

Published in: Self Improvement
  • Be the first to comment

  • Be the first to like this

Emerasoft Git quickstart

  1. 1. Git QuickStart By Guido Levi
  2. 2. Mai sentito parlare di peer-to-peer ?DRCS – Distributed Revision Control System
  3. 3. Distributed Revision Control System – La VisionArchitetturale•  Working Directory accoppiata con il repository•  No single-point of failure•  Utilizzo della rete non legato all’operatività quotidiana.•  Supporto nativo a progetti multi-siteProcessuale•  Definizione di workflow collaborativi e di revisione del codice.•  Peer-to-Peer alignment•  Continous Branching and MergingDRCS – Vision
  4. 4. Centralized Revision Control System – La Vision •  Un server, tante working copy client •  Security and Access Control centralizzati •  Backup Centralizzato •  Mirroring complicato e in sola letturaCentralized RCS – Vision
  5. 5. Ciascun utente ha una copia del repository in locale clonata da un altro repositoryDRCS – Come funziona
  6. 6. Git •  Creato da Linus Torvalds per supportare lo sviluppo di Linux worldwide nel 2005 •  Utilizzato da grandi progetti open source •  Linux •  Android •  Eclipse •  KDE •  Svariate GUI, soluzioni open source per i vari sistemi operativi e servizi di hosting •  Community molto attiva (frequentata anche da Google)Un pò di storia…
  7. 7. Git •  Totalmente Distribuito •  Scalabile •  Efficiente •  Garantisce Integrità dei dati •  Forte supporto al lavoro parallelo •  Immutabilità e transazioni atomicheGIT – Le caratteristiche
  8. 8. Cosa ci serve.. Linux •  apt-get install git-core Mac •  http://code.google.com/p/git-osx-installer/ Windows •  http://code.google.com/p/msysgit/GIT – Si comincia
  9. 9. .. Git è stato creato da Linus.. Due considerazioni •  Impariamo a usarlo da shell •  Per padroneggiarlo dobbiamo partire dalla sua struttura datiAvvertenza
  10. 10. SnapshotGit Basics
  11. 11. CommitGit Basics
  12. 12. Commit Graph•  git show 98ca9 ….Git Commit graph
  13. 13. HEAD Voi siete qui ! •  git show HEAD~2 (oppure HEAD^^) •  git show HEAD@{yesterday} •  git show HEAD@{2.days.ago} •  git show HEAD^2 (in caso di più ancestor) •  git show HEAD~3^2Git Basics
  14. 14. Work ow UtenteGit Basics
  15. 15. Staging Area (Index)•  Un’area intermedia tra la working directory e il repository.L’operazione di commit versiona il contenuto della staging area git add Aggiunge i file modificati alla staging git commit Versiona il contenuto della stagingGit Basics
  16. 16. Work ow di un leGit Basics
  17. 17. git status •  Riassume la situazione della working directory rispetto alla staging area. git diff Confronta la working directory con la staging area git diff --staged Confronta la staging area con la HEADGit Basics
  18. 18. Reverting•  Git fornisce diverse possibilità di intervento su commit giàeseguite •  Sovrascrittura di commit esistenti (amend) •  Rimozione di commit esistenti (reset) •  Revert di commit precedenti (revert) Attenzione !! Alcune sono irreversibili ! Modificano il grafo delle commit ! Prima di usarle pensarci molto bene ! Non usarle MAI su commit già inviate ai server remoti !Git Basics
  19. 19. Object References•  Un branch è un reference a una commit !•  Un puntatore che si sposta nel grafo delle commit•  Il default branch è master..•  cat .git/refs/heads/masterGit Branching
  20. 20. Git Branching
  21. 21. •  git checkout master•  git merge iss53Git Merging
  22. 22. Questo era quello semplice….•  C’e’ un altro modo per eseguire il merge di due rami..Rebase… •  git checkout experiment •  git rebase master•  Fast-Forward… •  Stesso risultato del merge semplice ma…Git Merging
  23. 23. Rebase •  La storia è più ‘pulita’, si perde traccia dell’avvenuta ramificazione •  In caso di integrazione di una patch, chi integra deve solo eseguire un fast-forward..Git Merging
  24. 24. Rebase Una storia molto più lineare !! Non fate rebase su commit che avete già inviato a repository remoti Si deve usare solo per rendere più lineare la storia del proprio lavoro prima di eseguire operazioni di push verso altri repositoryGit Merging
  25. 25. Branching workflow•  Master – codice stabile pronto per il rilascio•  Branch di sviluppo (long-running)•  Topic – branches usa e getta (tipo hotfix)Git Branching Work ow
  26. 26. Remote•  Ora che sappiamo lavorare sul nostro repo.. Dobbiamoimparare a interagire con gli altri repositorygit remote -v•  Se abbiamo clonato il nostro repo troviamo configurato ilrepository remoto origingit remote add <nome_remote> <indirizzo>•  Aggiunge il repository specificato dall’indirizzo, all’elenco deiremoti con il nome che vogliamo dargli•  Possiamo riferirci al nuovo remote con il nome che gli abbiamodatoGit Remote
  27. 27. Remote BranchesGit Remote Branches
  28. 28. Remote BranchesGit Remote Branches
  29. 29. Un Git server è un repository remoto (sempre accessibile), utilizzato per la collaboration.Git On Server
  30. 30. Ci sono diversi protocolli configurabili per rendere un git server raggiungibileGit On Server
  31. 31. Workflow Distribuiti•  Git è peer-to-peer. Potenzialmente qualunque peer puòricevere e inviare dati da e verso gli altri peer.•  Si possono definire le relazioni tra i peer per stabilire deiworkflow collaborativi..•  Non tutti i repository sono uguali !•  Solo alcuni repository possono eseguire push sui repo“blessed”Work ow Distribuiti
  32. 32. Centralized Workflow •  Peer alignment •  Per eseguire il push nello shared repo, devo prima essere aggiornato (pull)… Vi ricorda qualcosa ??Work ow Distribuiti
  33. 33. Dittatore – Luogotenenti Workflow•  Usato per lo sviluppo del kernel linux•  I luogotenenti integrano il lavoro dei developer nel propriomaster•  Il dittatore integra i master branches dei luogotenenti nel suoWork ow Distribuiti
  34. 34. Bibliografia •  http://progit.org/ •  http://git-scm.com/ Git Scm Italia •  http://www.git-scm.itBiblioga a
  35. 35. Emerasoft s.r.l.C.so Orbassano, 336 - 10137 Torino (TO)Tel. 011 19879273Professional Services Manager:Guido Leviguido.levi@emerasoft.com

×