Upgrade to Pro — share decks privately, control downloads, hide ads and more …

La gestion de sources avec GIT

5bfb729f6ac07e17c2326a7335a3f3be?s=47 yageek
November 08, 2013

La gestion de sources avec GIT

Une introduction à la gestion de sources avec git.

5bfb729f6ac07e17c2326a7335a3f3be?s=128

yageek

November 08, 2013
Tweet

Transcript

  1. La gestion de sources avec GIT Yannick Heinrich github.com/yageek! @yageek

  2. Problématiques ?

  3. Développer à plusieurs

  4. Passgade du VCS au Produit simple

  5. Garder un historique maintenable

  6. Pérennité du système

  7. VCS : 2 approches VS

  8. Client-Serveur SVN, ClearCase, CVS, etc.

  9. Décentralisé Git, Bazaar, Mercurial, Darcs, etc.

  10. VS

  11. Dans le monde de l’Open Source www.ohloh.net/repositories/compare (Octobre 2013)

  12. Dans l’entreprise - itjobswatch.co.uk http://programmers.stackexchange.com/questions/136079/are- there-any-statistics-that-show-the-popularity-of-git-versus-svn

  13. GIT Mercurial Language C Python Branching Léger Lourd Hooks ✔

    ✔ Test régression linéaire ✔ ✔ Intégration SHELL ✔ ✔ Travail dans le même dossier ✔ ✗✔ Modification de l’historique ✔ ✗ Pull-request ✔ ✗
  14. Les plus de GIT != GIT • Github • Github

    Hooks (travis-ci, basecamp) • Heroku, CloudBees, GAE
  15. Git - Les concepts

  16. Philosophie • Interrompre son travail sans surprise à n’importe quel

    moment • Travail effectué dans le même répertoire (working dir) • Très difficile de perdre quelque chose intentionnellement • Granularité basée sur le commit.
  17. Le commit • ensemble des modifications • date • identifiant

    unique (sha-1) • auteur • message explicatif
  18. Le commit

  19. • Le commit possède un identifiant unique basé sur le

    sha-1 • Les relations entre commits sont toujours du fils vers les parents • Le commit est la base de tout !
  20. Historique L’ensemble des commits forme l’historique

  21. Historique • L’historique permet de garder une trace de toute

    l’évolution du projet • Permet de revenir à n’importe quel étape dans le passé • Un outil aussi indispensable que l’IDE.
  22. Les branches • Permettent de sauvegarder et passer à autre

    chose • Garantissent un workflow/process cohérent • Permettent la synchronisation entre les différents participants • Favorisent le travail en parallèle
  23. Workflow type https://www.atlassian.com/fr/git/workflows#!workflow-gitflow

  24. Git - Les bases

  25. Working Dir, Stage & History

  26. Initialiser un projet cd ~/Dev/mysuperproject git init git add .

    git commit -m "My First commit" My First commit Yannick Heinrich 23/10/2013 1a3ef5
  27. Ajouter les modifications # Some modifications git add . git

    commit -m "Add super feature" My First commit Yannick Heinrich 23/10/2013 1a3ef5 Add super feature Yannick Heinrich 23/10/2013 3ad6f3
  28. Corriger un bug # Create new branch git checkout -b

    bugs/cr1344042924 #Fix bug git add . git commit -m "Fix cr1344042924" #Merge with develop branch git checkout develop git merge —-no-ff develop My First commit Yannick Heinrich 23/10/2013 1a3ef5 Add super feature Yannick Heinrich 23/10/2013 3ad6f3 Fix cr1344042924 Yannick Heinrich 23/10/2013 4a9c6e Merge 4a9c6e Yannick Heinrich 23/10/2013 4a9c6e
  29. Collaborer # Récupérer les nouvelles modifications distantes localement # La

    copie locale n'est pas modifiée git fetch origin # Récupérer les nouvelles modifications distantes et les fusionner localement git pull origin # Envoyer ses modifications locales git push origin
  30. Démo

  31. Git - Un peu plus loin

  32. Avancée • Cherry-picking • Recombinaison • Reflog • Stash •

    Commit partiels • Pull requests • Hooks • Submodule • Rerere • Bundle
  33. Cherry pick

  34. Recombinaison

  35. Reflog Stash

  36. Workflow avec git-flow

  37. Workflow type https://www.atlassian.com/fr/git/workflows#!workflow-gitflow

  38. Simplification avec git-flow # Créer une feature git flow feature

    start superfeature # Fermer/clore git flow feature finish superfeature ! # Créer un hotfix git flow hotfix start cr34433535 # Fermer/clore git flow hotfix finish cr34433535 ! # Créer une branche de support git flow support start fix prod # Fermer/clore sa feature git flow support finish fix prod http://labs.grupow.com/blog/2011/07/05/getting-started-with-git-flow
  39. Références • http://git-scm.com/ • http://marklodato.github.io/visual-git-guide/ index-fr.html • http://pcottle.github.io/learnGitBranching/

  40. Demo - Github & hooks