SlideShare une entreprise Scribd logo
1  sur  28
#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

Contenu connexe

Tendances

BEBUTANT JAVA
BEBUTANT  JAVABEBUTANT  JAVA
BEBUTANT JAVA
violonjo
 
Git ou le renouveau du contrôle de version
Git ou le renouveau du contrôle de versionGit ou le renouveau du contrôle de version
Git ou le renouveau du contrôle de version
goldoraf
 
Cours sur github part3 git
Cours sur github part3 gitCours sur github part3 git
Cours sur github part3 git
Pape Diop
 
Migration d'une base de code subversion vers git
Migration d'une base de code subversion vers gitMigration d'une base de code subversion vers git
Migration d'une base de code subversion vers git
Geoffrey Bachelet
 
Git et les systèmes de gestion de versions
Git et les systèmes de gestion de versionsGit et les systèmes de gestion de versions
Git et les systèmes de gestion de versions
Alice Loeser
 

Tendances (20)

BEBUTANT JAVA
BEBUTANT  JAVABEBUTANT  JAVA
BEBUTANT JAVA
 
Versioning avec Git
Versioning avec GitVersioning avec Git
Versioning avec Git
 
Terraform OpenStack : Mise en pratique sur infrastructure OVH (Rennes devops)
Terraform OpenStack : Mise en pratique sur infrastructure OVH (Rennes devops) Terraform OpenStack : Mise en pratique sur infrastructure OVH (Rennes devops)
Terraform OpenStack : Mise en pratique sur infrastructure OVH (Rennes devops)
 
Principes de fonctionnement unix
Principes de fonctionnement unixPrincipes de fonctionnement unix
Principes de fonctionnement unix
 
Git ou le renouveau du contrôle de version
Git ou le renouveau du contrôle de versionGit ou le renouveau du contrôle de version
Git ou le renouveau du contrôle de version
 
Git utilisation quotidienne
Git   utilisation quotidienneGit   utilisation quotidienne
Git utilisation quotidienne
 
Les développeurs aussi maitrisent le systèmD - Devoxx 2015
Les développeurs aussi maitrisent le systèmD - Devoxx 2015Les développeurs aussi maitrisent le systèmD - Devoxx 2015
Les développeurs aussi maitrisent le systèmD - Devoxx 2015
 
Présentation de git
Présentation de gitPrésentation de git
Présentation de git
 
Tutoriel GIT
Tutoriel GITTutoriel GIT
Tutoriel GIT
 
Cours sur github part3 git
Cours sur github part3 gitCours sur github part3 git
Cours sur github part3 git
 
Migration d'une base de code subversion vers git
Migration d'une base de code subversion vers gitMigration d'une base de code subversion vers git
Migration d'une base de code subversion vers git
 
Git et les systèmes de gestion de versions
Git et les systèmes de gestion de versionsGit et les systèmes de gestion de versions
Git et les systèmes de gestion de versions
 
XebiCon'16 : Wescale - GoCD démystifié Aurélien Maury, Directeur Technique et...
XebiCon'16 : Wescale - GoCD démystifié Aurélien Maury, Directeur Technique et...XebiCon'16 : Wescale - GoCD démystifié Aurélien Maury, Directeur Technique et...
XebiCon'16 : Wescale - GoCD démystifié Aurélien Maury, Directeur Technique et...
 
PostgreSQL Meetup Nantes #2
PostgreSQL Meetup Nantes #2PostgreSQL Meetup Nantes #2
PostgreSQL Meetup Nantes #2
 
Git l'essentiel
Git l'essentielGit l'essentiel
Git l'essentiel
 
Implementing a key/value store
Implementing a key/value storeImplementing a key/value store
Implementing a key/value store
 
PyConFR 2015 : Utiliser salt pour tester son infrastructure sur open stack ou...
PyConFR 2015 : Utiliser salt pour tester son infrastructure sur open stack ou...PyConFR 2015 : Utiliser salt pour tester son infrastructure sur open stack ou...
PyConFR 2015 : Utiliser salt pour tester son infrastructure sur open stack ou...
 
Rapport administration systèmes et supervision réseaux tp4 diabang master1 tr
Rapport administration systèmes et supervision réseaux tp4 diabang master1 trRapport administration systèmes et supervision réseaux tp4 diabang master1 tr
Rapport administration systèmes et supervision réseaux tp4 diabang master1 tr
 
Installation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey SpiderInstallation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey Spider
 
Rapport administration systèmes et supervision réseaux tp2 diabang master1 tr
Rapport administration systèmes et supervision réseaux tp2 diabang master1 trRapport administration systèmes et supervision réseaux tp2 diabang master1 tr
Rapport administration systèmes et supervision réseaux tp2 diabang master1 tr
 

Similaire à TP Git avancé DevoxxFR 2018 (pres')

Backdoors et rootkits_avancees_[slides]
Backdoors et rootkits_avancees_[slides]Backdoors et rootkits_avancees_[slides]
Backdoors et rootkits_avancees_[slides]
UltraUploader
 

Similaire à TP Git avancé DevoxxFR 2018 (pres') (20)

Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
 
Hackerspace jan-2013
Hackerspace jan-2013Hackerspace jan-2013
Hackerspace jan-2013
 
Construire un Fitbit-like pour chiens et chats (Devoxx France 21/04/2016)
Construire un Fitbit-like pour chiens et chats (Devoxx France 21/04/2016)Construire un Fitbit-like pour chiens et chats (Devoxx France 21/04/2016)
Construire un Fitbit-like pour chiens et chats (Devoxx France 21/04/2016)
 
Git Chti JUG
Git Chti JUGGit Chti JUG
Git Chti JUG
 
Javascript proprement
Javascript proprementJavascript proprement
Javascript proprement
 
Backdoors et rootkits_avancees_[slides]
Backdoors et rootkits_avancees_[slides]Backdoors et rootkits_avancees_[slides]
Backdoors et rootkits_avancees_[slides]
 
Git
GitGit
Git
 
Java (8) eXperiments - DevoxxFR 2016
Java (8) eXperiments - DevoxxFR 2016Java (8) eXperiments - DevoxxFR 2016
Java (8) eXperiments - DevoxxFR 2016
 
Lego bonnes pratiques_devoxx_2017
Lego bonnes pratiques_devoxx_2017Lego bonnes pratiques_devoxx_2017
Lego bonnes pratiques_devoxx_2017
 
Introduction à git.pdf
Introduction à git.pdfIntroduction à git.pdf
Introduction à git.pdf
 
C++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in ParisC++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in Paris
 
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
 
Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à Docker
 
GraphTour - Workday: Tracking activity with Neo4j (French version)
GraphTour - Workday: Tracking activity with Neo4j (French version)GraphTour - Workday: Tracking activity with Neo4j (French version)
GraphTour - Workday: Tracking activity with Neo4j (French version)
 
Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?
 
JCertif 2012 : Git par la pratique
JCertif 2012 : Git par la pratiqueJCertif 2012 : Git par la pratique
JCertif 2012 : Git par la pratique
 
Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'
 
git-cmds-base.pdf
git-cmds-base.pdfgit-cmds-base.pdf
git-cmds-base.pdf
 
Kit de survie pour l'IoT façon DIY
Kit de survie pour l'IoT façon DIYKit de survie pour l'IoT façon DIY
Kit de survie pour l'IoT façon DIY
 
Kubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestrationKubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestration
 

TP Git avancé DevoxxFR 2018 (pres')

  • 1. #DevoxxFR 1 Thomas COLLIGNON Pratiquer Git au niveau supérieur Jérôme TAMBORINI Alexis DMYTRYK
  • 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 We try 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 We try to keep the Devox France logo and the Tweet hashtag on all slides 7 git macommande --help
  • 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
  • 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
  • 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 COLLIGNON Jérôme TAMBORINI Alexis DMYTRYK

Notes de l'éditeur

  1. First part --- Second part Rebase interactif : 45 mins Reflog : 15 mins Last part bisect : 30 mins Hooks aliases : 30 mins
  2. Migration d’efluid de CVS ver sGit en Août 2011
  3. Migration d’efluid de CVS ver sGit en Août 2011
  4. En gros le rebase : faut voir ça comme une pile qu’on dépile et rempile
  5. En gros le rebase : faut voir ça comme une pile qu’on dépile et rempile
  6. En gros le rebase : faut voir ça comme une pile qu’on dépile et rempile
  7. 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
  8. En gros le rebase : faut voir ça comme une pile qu’on dépile et rempile
  9. En gros le rebase : faut voir ça comme une pile qu’on dépile et rempile
  10. En gros le rebase : faut voir ça comme une pile qu’on dépile et rempile