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

La théorie des graphes appliquée à Git

88b8138397e1d1441f4e4a54348bde09?s=47 ubermuda
April 17, 2017

La théorie des graphes appliquée à Git

88b8138397e1d1441f4e4a54348bde09?s=128

ubermuda

April 17, 2017
Tweet

Transcript

  1. La théorie des graphes appliquée à git Geoffrey Bachelet @ubermuda

  2. Königsberg

  3. ez pz Leonhard Euler

  4. None
  5. Pont Masse de terre

  6. Arête Noeud graphe

  7. 1 2 3 4

  8. None
  9. A B E D C

  10. A B E D C Noeuds

  11. A B E C Arêtes D

  12. A B E D C Graph orienté

  13. A B E D C Graph orienté

  14. None
  15. Atteignabilité

  16. Atteignabilité C est atteignable depuis E A B E D

    C
  17. Atteignabilité NOPE A B E D C

  18. A B D E C F D n'est pas atteignable

    depuis F Atteignabilité
  19. Atteignabilité

  20. None
  21. $ git branch * master $ ls .git/refs/heads/ master $

    cat .git/refs/heads/master 58bd01cded7904f1596cb12aac1d3e0e8ae6b558
  22. $ git log --format="%H" 6465a2cd4d6d3b0a0a62588eeb5b798bb7d31a71 7d1d4dabc49854a0807200361731446476565094 17a59ceda9b2806e2a135df039506d1ec1a976e6 ...

  23. $ echo "6465a2cd" > .git/refs/heads/foo

  24. $ git branch * master foo

  25. A B D E C F master foo

  26. A B D E C F master foo Atteignabilité !

  27. None
  28. Rappel • Une branche • Un tag • HEAD :

    commit actuel à un instant T Références
  29. Merge

  30. A B D E C F master foo HEAD $

    git merge master
  31. A B D E C F master foo $ git

    merge master HEAD
  32. A B D E C F master G foo $

    git merge master HEAD
  33. A B D E C F master foo G foo

    $ git merge master HEAD
  34. A B D E C F master foo G Atteignabilité

    ! HEAD
  35. fast-forward

  36. A B C E D foo master F HEAD $

    git merge foo
  37. A B C E D foo master F $ git

    merge foo Atteignable HEAD
  38. C E D foo master F master A B $

    git merge foo HEAD
  39. cherry-pick

  40. A B D E C F master foo $ git

    cherry-pick F HEAD
  41. master foo F' A B D E C F foo

    $ git cherry-pick F HEAD
  42. rebase

  43. $ git rebase master A B D E C F

    master foo HEAD
  44. B merge base A D E C F master foo

    $ git rebase master HEAD
  45. merge base premier ancêtre commun Atteignable !

  46. A B D E C F master foo Atteignable !

    HEAD
  47. A B D E C F master foo C' $

    git rebase master HEAD
  48. A B D E C F master foo C' D'

    $ git rebase master HEAD
  49. A B D E C F master foo C' D'

    foo $ git rebase master HEAD
  50. A B D E C F master C' D' foo

    $ git rebase master HEAD
  51. A B D E C F master C' D' foo

    Headless $ git rebase master HEAD
  52. Headless non-atteignable depuis une référence susceptible d'être "garbage collecté"

  53. A B D E C F master C' D' foo

    $ git reset --hard D foo A B D E C F C' D' HEAD
  54. $ git reflog ... 384b39c HEAD@{10}: merge feature/bdl-auth: Fast-forward 84541fe

    HEAD@{11}: checkout: moving from feature/bdl-auth to 384b39c HEAD@{12}: rebase finished: returning to refs/heads/f 384b39c HEAD@{13}: rebase: Add auth bundle
  55. fetch

  56. A B C D master A B master origin local

    origin/master
  57. local A B C D master A B master origin

    origin/master FETCH !
  58. A B C D master A B master C D

    origin/master origin origin/master local
  59. push

  60. A B master A B master origin local C D

  61. A B master A B master origin push D D

    local C
  62. A B master A B master A B A B

    origin local C D D PAS ATTEIGNABLE
  63. A B master A B master A B A B

    origin local C D D NOPE
  64. None
  65. Atteignabilité.

  66. https://speackerdeck.com/ubermuda https://think-like-a-git.net/ Geoffrey Bachelet @ubermuda