#DevoxxFR 1
Thomas COLLIGNON
Pratiquer Git au niveau supérieur
Jérôme TAMBORINI
Alexis DMYTRYK
#DevoxxFR
La startup
jetestedoncjesuis.js
2
#DevoxxFR
Roadmap
3
First part
• Stash
• Worktree
Second part
• Rebase
• Reflog
Last part
• Bisect
• Hooks, aliases,
retours d’XP
#DevoxxFR
We love picture
We try to keep the Devox France logo and the Tweet
hashtag on all slides
4
#DevoxxFR
Alerte générale : pré-requis
A vos clés USB !
• Tout est dedans (dossier install)
• Si le wifi marche :
https://github.com/efluid/jeTestDoncJeSuis-hol
Check Install : git, maven & gradle
• git --version
• mvn –version; gradle --version
• cd jeTestDoncJeSuis-hol; git status
5
#DevoxxFR
Alerte générale : petit sondage connaissances Git
Nombre d’années d’utilisation ?
• < 2ans – 2 à 5 ans – > 5 ans
Avant vous utilisez quoi ?
• SVN – CVS – ClearCase – Perforce – …
Qu’utilisez-vous ?
• Client GUI – Terminal
Quelle est votre utilisation de Git ?
• Commandes, flow, merge, rebase, etc.
6
#DevoxxFR
git help macommande
We try to keep the Devox France logo and the Tweet
hashtag on all slides
7
git macommande --help
#DevoxxFR
First part
8
git stash
git worktree
#DevoxxFR
First part : stash
9
Lundi matin
• On attaque une modification
• Puis une autre
• Puis une autre …
• Comment gérer proprement ses modifications
sans qu’elles ne se marchent dessus ?
#DevoxxFR
First part : stash
10
stash@{0}
stash@{1}
Pile
Zone de remisage
git stash
git stash push
git stash pop
git stash apply
stash@{1}
#DevoxxFR
First part : stash : à vos claviers
127.0.0.1:6363[2]> git stash
(integer) 1
127.0.0.1:6363[2]> ,,,
127.0.0.1:6363[2]> git stash save
(integer) 1
127.0.0.1:6363[2]> git stash pop
(integer) 1
12
#DevoxxFR
First part : worktree
13
Mardi matin
• On a un test à fixer en urgence
• Et bien sûr, un dev. à implémenter en urgence
• Fini de jouer avec le stash : on veut être plus
productif !
• Comment faire ?
#DevoxxFR
First part : worktree
14
Dépôt GIT
…
Un même dépôt mais des espaces de travail différents
Path : /d/monDepotPrincipal
Branche : master
Path : /d/monDepotCorrectionXXX
Branche : correctionXXX
Path : /d/monDepotNewFeatXXX
Branche : newFeatXXX
#DevoxxFR
First part : worktree : à vos claviers
127.0.0.1:6363[2]> git worktree --help
(integer) 1
127.0.0.1:6363[2]> ,,,
127.0.0.1:6363[2]> ./attaqueDDOSCIA.sh
(integer) 1
127.0.0.1:6363[2]> …
(integer) 1
15
#DevoxxFR
Second part
16
git rebase (-i)
git reflog
#DevoxxFR
Second part : rebase - reflog
17
Merge VS Rebase
• 2 « politiques »
• Equivalent à une stack
Crédit : Atlassian
#DevoxxFR
Second part : rebase interactif
18
Mercredi matin : le CTO débarque
• 2 features ont été développées la veille au soir
• Règles internes de développement
 Découpez vos commits
 Implémentez vos features en TDD
• Comment gagner sa prime ?
#DevoxxFR
Second part : rebase : à vos claviers
127.0.0.1:6363[2]> zadd hackers 1953 "Richard Stallman"
(integer) 1
127.0.0.1:6363[2]>
127.0.0.1:6363[2]> zadd hackers 1969 "Linus"
(integer) 1
127.0.0.1:6363[2]> zadd hackers 1912 "Alan turing"
(integer) 1
19
#DevoxxFR
Second part : rebase interactif
20
L'historique partagé jamais tu ne rebaseras
#DevoxxFR
Second part : reflog
21
Jeudi matin
• La veille au soir, on est sorti au bar (normal)
• On attaque un développement
• On a un coup de téléphone avec une question
sur un dev. précédent
• On ne sait plus où on en est, comment faire ?
#DevoxxFR
Second part : reflog : à vos claviers
127.0.0.1:6363[2]> zadd hackers 1953 "Richard Stallman"
(integer) 1
127.0.0.1:6363[2]>
127.0.0.1:6363[2]> zadd hackers 1969 "Linus"
(integer) 1
127.0.0.1:6363[2]> zadd hackers 1912 "Alan turing"
(integer) 1
22
#DevoxxFR
Last part
23
git bisect
Hooks, aliases & cie
#DevoxxFR
Last part : bisect
24
Vendredi matin : le CTO débarque en mode fury
• Un bug bloquant vient d’être détectée en
production
• Personne ne l’avait vu !?
• D’où vient ce bug ?
• De quel commit ?
#DevoxxFR
Last part : bisect : à vos claviers
127.0.0.1:6363[2]> zadd hackers 1953 "Richard Stallman"
(integer) 1
127.0.0.1:6363[2]>
127.0.0.1:6363[2]> zadd hackers 1969 "Linus"
(integer) 1
127.0.0.1:6363[2]> zadd hackers 1912 "Alan turing"
(integer) 1
25
#DevoxxFR
Last part : hooks - aliases and whatever you want !
26
Samedi matin (bah oui, ça reste une start-up ^^)
• Comment ajouter des contrôles ?
• Comment se faire ses alias Git ?
• Des bonus, des questions, des échanges
#DevoxxFR
Last part : hooks - aliases and whatever you want !
27
Crédit : delicious-insights.com
#DevoxxFR
Last part : hooks - aliases and whatever you want !
127.0.0.1:6363[2]> zadd hackers 1953 "Richard Stallman"
(integer) 1
127.0.0.1:6363[2]>
127.0.0.1:6363[2]> zadd hackers 1969 "Linus"
(integer) 1
127.0.0.1:6363[2]> zadd hackers 1912 "Alan turing"
(integer) 1
28
#DevoxxFR 29
Thomas COLLIGNON Jérôme TAMBORINI
Alexis DMYTRYK

TP Git avancé DevoxxFR 2018 (pres')

  • 1.
    #DevoxxFR 1 Thomas COLLIGNON PratiquerGit au niveau supérieur Jérôme TAMBORINI Alexis DMYTRYK
  • 2.
  • 3.
    #DevoxxFR Roadmap 3 First part • Stash •Worktree Second part • Rebase • Reflog Last part • Bisect • Hooks, aliases, retours d’XP
  • 4.
    #DevoxxFR We love picture Wetry to keep the Devox France logo and the Tweet hashtag on all slides 4
  • 5.
    #DevoxxFR Alerte générale :pré-requis A vos clés USB ! • Tout est dedans (dossier install) • Si le wifi marche : https://github.com/efluid/jeTestDoncJeSuis-hol Check Install : git, maven & gradle • git --version • mvn –version; gradle --version • cd jeTestDoncJeSuis-hol; git status 5
  • 6.
    #DevoxxFR Alerte générale :petit sondage connaissances Git Nombre d’années d’utilisation ? • < 2ans – 2 à 5 ans – > 5 ans Avant vous utilisez quoi ? • SVN – CVS – ClearCase – Perforce – … Qu’utilisez-vous ? • Client GUI – Terminal Quelle est votre utilisation de Git ? • Commandes, flow, merge, rebase, etc. 6
  • 7.
    #DevoxxFR git help macommande Wetry to keep the Devox France logo and the Tweet hashtag on all slides 7 git macommande --help
  • 8.
  • 9.
    #DevoxxFR First part :stash 9 Lundi matin • On attaque une modification • Puis une autre • Puis une autre … • Comment gérer proprement ses modifications sans qu’elles ne se marchent dessus ?
  • 10.
    #DevoxxFR First part :stash 10 stash@{0} stash@{1} Pile Zone de remisage git stash git stash push git stash pop git stash apply stash@{1}
  • 11.
    #DevoxxFR First part :stash : à vos claviers 127.0.0.1:6363[2]> git stash (integer) 1 127.0.0.1:6363[2]> ,,, 127.0.0.1:6363[2]> git stash save (integer) 1 127.0.0.1:6363[2]> git stash pop (integer) 1 12
  • 12.
    #DevoxxFR First part :worktree 13 Mardi matin • On a un test à fixer en urgence • Et bien sûr, un dev. à implémenter en urgence • Fini de jouer avec le stash : on veut être plus productif ! • Comment faire ?
  • 13.
    #DevoxxFR First part :worktree 14 Dépôt GIT … Un même dépôt mais des espaces de travail différents Path : /d/monDepotPrincipal Branche : master Path : /d/monDepotCorrectionXXX Branche : correctionXXX Path : /d/monDepotNewFeatXXX Branche : newFeatXXX
  • 14.
    #DevoxxFR First part :worktree : à vos claviers 127.0.0.1:6363[2]> git worktree --help (integer) 1 127.0.0.1:6363[2]> ,,, 127.0.0.1:6363[2]> ./attaqueDDOSCIA.sh (integer) 1 127.0.0.1:6363[2]> … (integer) 1 15
  • 15.
  • 16.
    #DevoxxFR Second part :rebase - reflog 17 Merge VS Rebase • 2 « politiques » • Equivalent à une stack Crédit : Atlassian
  • 17.
    #DevoxxFR Second part :rebase interactif 18 Mercredi matin : le CTO débarque • 2 features ont été développées la veille au soir • Règles internes de développement  Découpez vos commits  Implémentez vos features en TDD • Comment gagner sa prime ?
  • 18.
    #DevoxxFR Second part :rebase : à vos claviers 127.0.0.1:6363[2]> zadd hackers 1953 "Richard Stallman" (integer) 1 127.0.0.1:6363[2]> 127.0.0.1:6363[2]> zadd hackers 1969 "Linus" (integer) 1 127.0.0.1:6363[2]> zadd hackers 1912 "Alan turing" (integer) 1 19
  • 19.
    #DevoxxFR Second part :rebase interactif 20 L'historique partagé jamais tu ne rebaseras
  • 20.
    #DevoxxFR Second part :reflog 21 Jeudi matin • La veille au soir, on est sorti au bar (normal) • On attaque un développement • On a un coup de téléphone avec une question sur un dev. précédent • On ne sait plus où on en est, comment faire ?
  • 21.
    #DevoxxFR Second part :reflog : à vos claviers 127.0.0.1:6363[2]> zadd hackers 1953 "Richard Stallman" (integer) 1 127.0.0.1:6363[2]> 127.0.0.1:6363[2]> zadd hackers 1969 "Linus" (integer) 1 127.0.0.1:6363[2]> zadd hackers 1912 "Alan turing" (integer) 1 22
  • 22.
  • 23.
    #DevoxxFR Last part :bisect 24 Vendredi matin : le CTO débarque en mode fury • Un bug bloquant vient d’être détectée en production • Personne ne l’avait vu !? • D’où vient ce bug ? • De quel commit ?
  • 24.
    #DevoxxFR Last part :bisect : à vos claviers 127.0.0.1:6363[2]> zadd hackers 1953 "Richard Stallman" (integer) 1 127.0.0.1:6363[2]> 127.0.0.1:6363[2]> zadd hackers 1969 "Linus" (integer) 1 127.0.0.1:6363[2]> zadd hackers 1912 "Alan turing" (integer) 1 25
  • 25.
    #DevoxxFR Last part :hooks - aliases and whatever you want ! 26 Samedi matin (bah oui, ça reste une start-up ^^) • Comment ajouter des contrôles ? • Comment se faire ses alias Git ? • Des bonus, des questions, des échanges
  • 26.
    #DevoxxFR Last part :hooks - aliases and whatever you want ! 27 Crédit : delicious-insights.com
  • 27.
    #DevoxxFR Last part :hooks - aliases and whatever you want ! 127.0.0.1:6363[2]> zadd hackers 1953 "Richard Stallman" (integer) 1 127.0.0.1:6363[2]> 127.0.0.1:6363[2]> zadd hackers 1969 "Linus" (integer) 1 127.0.0.1:6363[2]> zadd hackers 1912 "Alan turing" (integer) 1 28
  • 28.
    #DevoxxFR 29 Thomas COLLIGNONJérôme TAMBORINI Alexis DMYTRYK

Notes de l'éditeur

  • #4 First part --- Second part Rebase interactif : 45 mins Reflog : 15 mins Last part bisect : 30 mins Hooks aliases : 30 mins
  • #6 Migration d’efluid de CVS ver sGit en Août 2011
  • #7 Migration d’efluid de CVS ver sGit en Août 2011
  • #12 En gros le rebase : faut voir ça comme une pile qu’on dépile et rempile
  • #18 En gros le rebase : faut voir ça comme une pile qu’on dépile et rempile
  • #19 En gros le rebase : faut voir ça comme une pile qu’on dépile et rempile
  • #21 L'historique partagé jamais tu ne rebaseras : Tant que vous rebasez vos petites branches en local, tout va bien. Mais attention, si vous rebasez une branche qui se trouve déjà sur le serveur, c'est la catastrophe. Vous allez pourrir l'historique de tous vos coworkeurs, qui s'empresseront de vous couvrir de goudron et de plume avant d'essayer de vous vendre aux abattoirs d'un KFC. Illustration. v
  • #22 En gros le rebase : faut voir ça comme une pile qu’on dépile et rempile
  • #25 En gros le rebase : faut voir ça comme une pile qu’on dépile et rempile
  • #27 En gros le rebase : faut voir ça comme une pile qu’on dépile et rempile