Hands-on-Lab (TP) sur l'utilisation de Git en mode avancé dispensé avec mes collègues Alexis DMYTRYK et Thomas COLLIGNON lors de DevoxxFR 2018.
L'énoncé avec les corrections est disponible sur mon slideshare.
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
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
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
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
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
First part
---
Second part
Rebase interactif : 45 mins
Reflog : 15 mins
Last part
bisect : 30 mins
Hooks aliases : 30 mins
Migration d’efluid de CVS ver sGit en Août 2011
Migration d’efluid de CVS ver sGit en Août 2011
En gros le rebase : faut voir ça comme une pile qu’on dépile et rempile
En gros le rebase : faut voir ça comme une pile qu’on dépile et rempile
En gros le rebase : faut voir ça comme une pile qu’on dépile et rempile
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
En gros le rebase : faut voir ça comme une pile qu’on dépile et rempile
En gros le rebase : faut voir ça comme une pile qu’on dépile et rempile
En gros le rebase : faut voir ça comme une pile qu’on dépile et rempile