T R A V A I L C O L L A B O R A T I F
E F F I C A C E A V E C G I T
V E R S I O N P Y C H A R M
18 mai 2016
O B J E C T I F S
2
1 Comprendre l'intérêt des gestionnaires de code
2 Effectuer des manipulations simples
3 Découvrir une...
Introduction
Pourquoi ?Utiliser un Source Code Manager
P O U R S O I
5
Il est utile
 de pouvoir retrouver les différentes étapes de son travail
 d'avoir plusieurs versions de ...
P O U R S O N E Q U I P E
6
Toute production - code ou autre - fait partie du patrimoine de son équipe et doit
être conser...
P O U R N O S E Q U I P E S
7
Il est nécessaire d'outiller et organiser le travail collaboratif
Pourquoi ?GIT
P O U R Q U O I G I T ?
9
 Il existe beaucoup de SCM : CVS, SVN, Git, Mercurial,...
 En général chaque nouvelle générati...
P O U R Q U O I G I T ?
La plupart des opérations s’effectuent
sur le poste du développeur sans
passer par le réseau
Rapid...
Remarques
I D E U T I L I S E
12
 Par défaut Git s'utilise avec l'invite de commande
 Les principaux IDE (Eclipse, Netbeans, Intel...
S E R V E U R G I T
13
 Plusieurs serveurs Git en ligne et gratuits existent (GitHub, BitBucket,...)
 Il existe égalemen...
Quelques notions
préliminaires
D E P O T LO C A L E T R E P E R T O I R E D E T R AVA I L
15
 Pour chaque projet, Git utilise un répertoire (.git) dans ...
D E P O T LO C A L E T R E P E R T O I R E D E T R AVA I L
16
Ve r s i o n d e t r a v a i l d u p r o j e t
Ré p e r t o ...
 Chaque fois qu'un projet est validé, Git stocke dans le dépôt local, une image de tous les
fichers composants alors le p...
 Avec Git, le cycle classique est le suivant :
1. On ajoute/supprime/modifie des fichiers dans l'espace de travail
2. On ...
Manipulations locales
Le projet peut déjà exister ou n'être qu'un répertoire vide.
 Dans le menuVCS, sélectionnez EnableVersion Control Integra...
A J O U T E R G I T A U N P R O J E T
21
Il est utile de pouvoir facilement voir l'ensemble des fichiers ajoutés/supprimés/modifiés et non
ajoutés au dépôt local.
...
Il est utile de pouvoir facilement voir l'ensemble des fichiers ajoutés/supprimés/modifiés et non
ajoutés au dépôt local.
...
A J O U T E R D E S F I C H I E R S A U D E P O T LO C A L
24
L’ajout de fichiers au dépôt local s’appelle un commit.
 Da...
A J O U T E R D E S F I C H I E R S A U D E P O T LO C A L
25
A J O U T E R D E S F I C H I E R S A U D E P O T LO C A L
26
Les fichiers sont désormais indexés et vont pouvoir être pro...
A J O U T E R D E S F I C H I E R S A U D E P O T LO C A L
27
I G N O R E R D E S F I C H I E R S
28
Certains fichiers ne doivent pas être commités :
 Fichier spécifiques à un IDE ou ...
I G N O R E R D E S F I C H I E R S
29
 Le fichier .gitignore est un fichier ordinaire : il doit être ajouté au dépôt et ...
S U P P R I M E R U N F I C H I E R
30
Lorsque que l'on supprime un fichier - via l'IDE par exemple - il faut répercuter c...
S U P P R I M E R U N F I C H I E R
31
 Remarquez que cette fois-ci, la boite de dialogue indique que le commit va concer...
R E N O M M E R U N F I C H I E R
32
Répercuter le changement de nom d'un fichier présent au dépôt est un action similaire...
R E N O M M E R U N F I C H I E R
33
Remarquez que cette fois-ci, la boite de dialogue indique que le commit va concerner ...
C O N S U LT E R L’ H I S T O R I Q U E
34
L'onglet Log permet de consulter l'historique du projet :
 les différents comm...
C O N S U LT E R L’ H I S T O R I Q U E
35
Pour chaque commit, les différents fichiers concernés sont affichés sur le pann...
C O N S U LT E R L’ H I S T O R I Q U E
36
Il est également possible de connaitre l'historique d'un fichier unique
C O N S U LT E R L’ H I S T O R I Q U E
37
A J O U T E R D E S E T I Q U E T T E S ( TA G )
38
Une étiquette permet de donner un nom sur un instantanné afin d'être f...
A J O U T E R D E S E T I Q U E T T E S ( TA G )
39
 Indiquez le nom de l'étiquette et validez
 L'étiquette est visible ...
R E M P L A C E R PA R U N E V E R S I O N A N T E R I E U R E
40
La commande git checkout permet de naviguer entre les br...
R E M P L A C E R PA R U N E V E R S I O N A N T E R I E U R E
41
 Lancez la commande git checkout 479b5c7 fichier3.txt
...
R E PA R T I R D ’ U N C O M M I T A N T E R I E U R
42
Il peut être utile - mais dangereux - de repartir d'un commit plus...
R E PA R T I R D ’ U N C O M M I T A N T E R I E U R
43
Dans la boite de dialogue choisissez l'option adaptée à votre beso...
Les branches
Partie 1 : la théorie
P O U R Q U O I AV O I R B E S O I N D E B R A N C H E S ?
45
Il peut être nécessaire de travailler simultanément sur plus...
G I T F LO W
46
 En 2010, Vincent Driessen publie un article intitulé A successful Git branching
model (http://nvie.com/p...
G I T F LO W
47
G I T F LO W
48
 Branches pérennes
master : branche correspondant au code en production
develop : branche correspondant a...
G I T F LO W
49
Une surcouche à Git en mode commande est également disponible mettant en oeuvre de
manière explicite les p...
C O M M E N T G I T G E R E L E S B R A N C H E S ?
50
 Chaque commit entraîne la création d'un instantané identifié par ...
C O M M E N T G I T G E R E L E S B R A N C H E S ?
51
 Créer une nouvelle branche revient donc à ajouter un nouveau poin...
C O M M E N T G I T G E R E L E S B R A N C H E S ?
52
 Lors des commits suivants seul le pointeur de la branche actuelle...
L E S F U S I O N S
53
Deux cas se présentent en général
1. La branche qui va recevoir la fusion est un ancêtre de la bran...
L E S F U S I O N S
54
Ce cas est très simple, la fusion revient simplement à déplacer le curseur de la branche
recevante ...
L E S F U S I O N S
55
Ce cas est potentiellement compliqué car certains fichiers ont pu être modifiés dans les deux
branc...
Les branches
Partie 2 : la pratique
C R É E R U N E B R A N C H E
57
La branche courante est indiquée à droite de la barre de statut.
Par défaut, la 1ère bran...
C R É E R U N E B R A N C H E
58
 Dans la boite de dialogue, indiquez le nom de la nouvelle branche :develop
 La vue Log...
C R É E R U N E B R A N C H E
59
 La barre de statut indique désormais develop comme branche actuelle.
Créez de la même m...
B A S C U L E R D ’ U N E B R A N C H E A L’A U T R E
60
 Le menu déroulant des branches indique les différentes branches...
B A S C U L E R D ’ U N E B R A N C H E A L’A U T R E
61
 Remarque : le fichier fichier3.txt est présent dans la nouvelle...
F U S I O N S I M P L E ( FA S T F O R WA R D)
62
 Dans fichier1.txt ajoutez une nouvelle ligne (Ligne ajoutée dans MaFon...
F U S I O N S I M P L E ( FA S T F O R WA R D)
63
 Le fichier 1 modifié et le fichier 4 sont bien présents
 En fait Git ...
F U S I O N AV E C C O N F L I T
64
 Supprimez le fichier fichier3.txt
 Demandez la fusion avec la branche Hotfix_1
 Il...
F U S I O N AV E C C O N F L I T
65
 La situation est alors la suivante :
Notez la présence du commit de fusion.
S U P P R E S S I O N D E B R A N C H E
66
Les branches Hotfix_1 et feature_MaFonction sont des branches temporaires. Elle...
Échanger avec d'autres
développeurs :
les dépôts distants
L E S D E P O T S D I S TA N T S ( R E M O T E )
68
Objectifs
 Les dépots vont permettre aux développeurs de partager leu...
C R E AT I O N D U D E P O T D I S TA N T
69
 Dans un terminal créez un répertoire monDepotGit.git
 Entrez dans le réper...
C O N N E X I O N A U D E P O T D I S TA N T
70
 Dans Pycharm, via le menu contextuel du projet, utilisez la commande
Git...
C O N N E X I O N A U D E P O T D I S TA N T
71
 Dans la fenêtre qui s'ouvre cliquez sur Define remote
 Laissez le nom o...
C O N N E X I O N A U D E P O T D I S TA N T
72
 origin est le nom d'usage pour le serveur distant central.
 L'URL indiq...
C O N N E X I O N A U D E P O T D I S TA N T
73
R E C U P E R AT I O N D U D E P O T D I S TA N T
74
Nous allons récupérer le projet à partir du dépôt distant pour simule...
R E C U P E R AT I O N D U D E P O T D I S TA N T
75
 Indiquez l'adresse du dépôt distant
 Indiquez comme nom de projet ...
R E C U P E R AT I O N D U D E P O T D I S TA N T
76
 Dans la barre de statut, choisissez la branche develop et cliquez s...
T R A N S F E R T D U C O M M I T ( P U S H )
77
 Dans monProjetDev2, créez un fichier fichier5.txt avec comme contenuCon...
R E C U P E R AT I O N D U C O M M I T ( P U L L )
78
 Dans monProjet, à partir du menu contextuel du projet choisissez G...
R E C U P E R AT I O N D U C O M M I T ( P U L L )
79
 Le commit contenant fichier5.txt a été récupéré dans monProjet
R E M A R Q U E S S U R L E S R E M O T E S
80
Avec les remotes, les développeurs vont être confrontés aux problèmes clas...
Conclusion
P O U R A L L E R P L U S LO I N
82
 Pro Git (par Scott Chacon)
• Ouvrage de référence
• Disponible gratuitement en franç...
Merci
www.aeris-data.fr
Modèle de présentation : ttp://thepopp.com/ - Jun Akizak
Prochain SlideShare
Chargement dans…5
×

Tutoriel GIT

2 370 vues

Publié le

Tutoriel GIT complet (exercices basés sur l'interface PyCharm)

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
2 370
Sur SlideShare
0
Issues des intégrations
0
Intégrations
11
Actions
Partages
0
Téléchargements
137
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Tutoriel GIT

  1. 1. T R A V A I L C O L L A B O R A T I F E F F I C A C E A V E C G I T V E R S I O N P Y C H A R M 18 mai 2016
  2. 2. O B J E C T I F S 2 1 Comprendre l'intérêt des gestionnaires de code 2 Effectuer des manipulations simples 3 Découvrir une stratégie de gestion des projets
  3. 3. Introduction
  4. 4. Pourquoi ?Utiliser un Source Code Manager
  5. 5. P O U R S O I 5 Il est utile  de pouvoir retrouver les différentes étapes de son travail  d'avoir plusieurs versions de son travail en même temps
  6. 6. P O U R S O N E Q U I P E 6 Toute production - code ou autre - fait partie du patrimoine de son équipe et doit être conservée de manière pérenne (c.a.d avec des pratiques connues)
  7. 7. P O U R N O S E Q U I P E S 7 Il est nécessaire d'outiller et organiser le travail collaboratif
  8. 8. Pourquoi ?GIT
  9. 9. P O U R Q U O I G I T ? 9  Il existe beaucoup de SCM : CVS, SVN, Git, Mercurial,...  En général chaque nouvelle génération d'outil rend la précédente obsolète Git apporte beaucoup de souplesses :  Le travail déconnecté  La possibilité de travailler facilement sur plusieurs versions de l'application (les branches)  La version de production  La version en développement  La possibilité de travailler à plusieurs : Avec un serveur central Avec plusieurs serveurs centraux  Directement entre plusieurs développeurs
  10. 10. P O U R Q U O I G I T ? La plupart des opérations s’effectuent sur le poste du développeur sans passer par le réseau Rapide Git est disponible sur tous les systèmes d’exploitation. Il peut être utilisé en ligne de commande ou via un IDE. Agnostique Il existe, sur Internet, un grand nombre de forge basées sur Git. Elles ajoutent des fonctionnalités sociales permettant de proposer des évolutions, des corrections… Social Via ses fonctionnalités, Git permet de mettre en place des organisations du développement permettant de résoudre les soucis usuels, par exempleGitFlow. Efficace 10
  11. 11. Remarques
  12. 12. I D E U T I L I S E 12  Par défaut Git s'utilise avec l'invite de commande  Les principaux IDE (Eclipse, Netbeans, IntelliJ ...) masquent ces commandes en les intégrant à leur interface  Les exercices proposés utilisent gratuit l'IDE PyCharm (Community Edition) disponible ici : https://www.jetbrains.com/pycharm/. Toutefois, afin de permettre le passage vers d'autres IDE et l'appronfondissement de l'outil, les commandes sont indiquées en marge des exercices  L'onglet Console de PyCharm permet de voir les commandes effectuées de manière sous- jacente.
  13. 13. S E R V E U R G I T 13  Plusieurs serveurs Git en ligne et gratuits existent (GitHub, BitBucket,...)  Il existe également des serveurs à installer localement (GitLab C.E.) Renater propose gratuitement une forge destinée aux EPST, Sourcesup, offrant les fonctionnalités suivantes :  Dépôts publics/privés (Authentification basée sur Sibboleth)  Git  Gestionnaire d'anomalies (Mantis BT) Wiki  Moteur d'intégration continue (Jenkins) Sourcesup
  14. 14. Quelques notions préliminaires
  15. 15. D E P O T LO C A L E T R E P E R T O I R E D E T R AVA I L 15  Pour chaque projet, Git utilise un répertoire (.git) dans lequel il va mettre l'ensemble des données/métadonnées permettant de retracer l'histoire du projet. C'est le dépôt local du projet.  Git va extraire de ce dépôt une version du projet dans un répertoire afin de permettre l'édition des fichiers. C'est le répertoire de travail du projet.  En général le dépôt local est un sous répertoire du projet
  16. 16. D E P O T LO C A L E T R E P E R T O I R E D E T R AVA I L 16 Ve r s i o n d e t r a v a i l d u p r o j e t Ré p e r t o i r e d e t r a v a i l D é p ô t l o c a l
  17. 17.  Chaque fois qu'un projet est validé, Git stocke dans le dépôt local, une image de tous les fichers composants alors le projet. On parle d'instantané. I N S TA N TA N E 17
  18. 18.  Avec Git, le cycle classique est le suivant : 1. On ajoute/supprime/modifie des fichiers dans l'espace de travail 2. On groupe l'ensemble de ces modifications (on parle d'indexation) 3. On valide (commit) ces modifications dans le dépôt local en y associant un commentaire (exemple: correction de l'anomalie #145) E C H A N G E S LO C A U X 18
  19. 19. Manipulations locales
  20. 20. Le projet peut déjà exister ou n'être qu'un répertoire vide.  Dans le menuVCS, sélectionnez EnableVersion Control Integration  Dans la fenêtre popup, sélectionnez Git et cliquez sur Ok A l'issue de la configuration, la barre de statut devrait afficherGit:master A J O U T E R G I T A U N P R O J E T 20
  21. 21. A J O U T E R G I T A U N P R O J E T 21
  22. 22. Il est utile de pouvoir facilement voir l'ensemble des fichiers ajoutés/supprimés/modifiés et non ajoutés au dépôt local.  Dans la barre de statut, faites apparaître le menuVersion Control et cliquez dessus  Cliquez sur Local Changes pour faire apparaître la liste des fichiers non validés C O N N A I T R E L E S F I C H I E R S N O N VA L I D E S 22
  23. 23. Il est utile de pouvoir facilement voir l'ensemble des fichiers ajoutés/supprimés/modifiés et non ajoutés au dépôt local.  Dans la barre de statut, faites apparaître le menuVersion Control et cliquez dessus  Cliquez sur Local Changes pour faire apparaître la liste des fichiers non validés C O N N A I T R E L E S F I C H I E R S N O N VA L I D E S 23
  24. 24. A J O U T E R D E S F I C H I E R S A U D E P O T LO C A L 24 L’ajout de fichiers au dépôt local s’appelle un commit.  Dans le projet, créez deux fichiers, fichier1.txt et fichier2.txt avec comme contenu Contenu du fichier X PyCharm vous propose par défaut que ces fichiers soient gérés par Git. Déclinez l'offre en cliquant sur No Vous pouvez vérifier dans Local Changes que les deux fichiers apparaissent dans la section Unversioned Files  Sélectionnez les fichiers (dans l'arboresence du projet), Dans le menu contextuel cliquez sur Git puis sur Add.
  25. 25. A J O U T E R D E S F I C H I E R S A U D E P O T LO C A L 25
  26. 26. A J O U T E R D E S F I C H I E R S A U D E P O T LO C A L 26 Les fichiers sont désormais indexés et vont pouvoir être proposés au prochain Commit  Cliquez sur l'icône de commit  La fenêtre qui apparaît indique les fichiers qui vont faire partie du commit.Vous pouvez en désélectionner.  Indiquez un commentaire ainsi que le nom de l'auteur et cliquez sur Commit
  27. 27. A J O U T E R D E S F I C H I E R S A U D E P O T LO C A L 27
  28. 28. I G N O R E R D E S F I C H I E R S 28 Certains fichiers ne doivent pas être commités :  Fichier spécifiques à un IDE ou à un poste de développement  Fichiers générés (.class, .jar)  … PyCharm propose un mécanisme propriétaire pour ignorer les fichiers. Nous allons utiliser le mécanisme standard de Git qui repose sur un fichier nommé .gitignore  Créez un fichier .gitignore à la racine du projet  Indiquez comme contenu /.idea.Cela signifie que tous les fichiers du répertoire .idea seront ignorés.  La liste Unversioned Files n'affiche plus les fichiers du répertoire .idea
  29. 29. I G N O R E R D E S F I C H I E R S 29  Le fichier .gitignore est un fichier ordinaire : il doit être ajouté au dépôt et commité.  La syntaxe du fichier .gitignore est détaillée ici : http://git-scm.com/docs/gitignore  Des exemples de fichiers .gitignore adaptés à chaque language/framework sont disponibles : https://github.com/github/gitignore REMARQUES
  30. 30. S U P P R I M E R U N F I C H I E R 30 Lorsque que l'on supprime un fichier - via l'IDE par exemple - il faut répercuter cette suppression au niveau du dépôt local si celui-ci y était déjà présent. Cette opération est similaire à un commit.  Créez un fichier fichier3.txt avec comme contenu Contenu du fichier 3. Ajoutez ce fichier au dépot local  Supprimez le fichier dans l'arboresence du projet.  Cliquez sur le bouton Commit
  31. 31. S U P P R I M E R U N F I C H I E R 31  Remarquez que cette fois-ci, la boite de dialogue indique que le commit va concerner une suppression.  Commitez
  32. 32. R E N O M M E R U N F I C H I E R 32 Répercuter le changement de nom d'un fichier présent au dépôt est un action similaire à la suppression  Renommez le fichier fichier2.txt en fichier2b.txt (via le menu contextuel)  L'onglet Local Changes indique que le changement est un changement de nom  Cliquez sur le bouton Commit
  33. 33. R E N O M M E R U N F I C H I E R 33 Remarquez que cette fois-ci, la boite de dialogue indique que le commit va concerner un changement de nom Commitez
  34. 34. C O N S U LT E R L’ H I S T O R I Q U E 34 L'onglet Log permet de consulter l'historique du projet :  les différents commits (avec leur messages)  les différentes branches  Dans le fichier fichier1.txt ajoutez une ligne ayant comme contenu Ligne ajoutée ultérieurement  Commitez le fichier
  35. 35. C O N S U LT E R L’ H I S T O R I Q U E 35 Pour chaque commit, les différents fichiers concernés sont affichés sur le panneau de droite. Dans le menu contextuel, Show Diff with local permet de voir les différences par rapport au répertoire de travail
  36. 36. C O N S U LT E R L’ H I S T O R I Q U E 36 Il est également possible de connaitre l'historique d'un fichier unique
  37. 37. C O N S U LT E R L’ H I S T O R I Q U E 37
  38. 38. A J O U T E R D E S E T I Q U E T T E S ( TA G ) 38 Une étiquette permet de donner un nom sur un instantanné afin d'être facilement identifiable par la suite. Par exemple, cela permet d'associer un numéro de version à un état du projet.  Dans la vue Log, sélectionnez le commit à tagger et faîtes apparaître le menu contextuel  Sélectionnez la commande NewTag...
  39. 39. A J O U T E R D E S E T I Q U E T T E S ( TA G ) 39  Indiquez le nom de l'étiquette et validez  L'étiquette est visible dans la vue Log
  40. 40. R E M P L A C E R PA R U N E V E R S I O N A N T E R I E U R E 40 La commande git checkout permet de naviguer entre les branches et les commits (cf. infra). Elle peut toutefois être utilisée pour restaurer un fichier dans une version plus ancienne. Par exemple fichier3.txt.  Identifiez l'identifiant du commit contenant la version de fichier3.txtsouhaitée via la vue Log. Dans notre cas 479b5c7.  Ouvrir un terminal dans le répertoire racine du projet
  41. 41. R E M P L A C E R PA R U N E V E R S I O N A N T E R I E U R E 41  Lancez la commande git checkout 479b5c7 fichier3.txt  Le fichier a été restauré et est présent dans l'espace de travail comme un nouveau fichier.
  42. 42. R E PA R T I R D ’ U N C O M M I T A N T E R I E U R 42 Il peut être utile - mais dangereux - de repartir d'un commit plus ancien et de supprimer les commits survenus depuis.  Dans la fenêtre Log, sélectionnez le commit à partir duquel vous voulez repartir.  Dans le menu contextuel, sélectionnez la commande Reset current branche to here...
  43. 43. R E PA R T I R D ’ U N C O M M I T A N T E R I E U R 43 Dans la boite de dialogue choisissez l'option adaptée à votre besoin et validez en cliquant sur Reset. Il est peut-être plus prudent de créer une branche à partir du commit identifié.
  44. 44. Les branches Partie 1 : la théorie
  45. 45. P O U R Q U O I AV O I R B E S O I N D E B R A N C H E S ? 45 Il peut être nécessaire de travailler simultanément sur plusieurs versions du code: Version en production Version en développement  ... Le concept de branche répond à ce besoin et les différents SCM le mettent en œuvre. Toutefois, généralement, l'implémentation proposée fait que le concept est rarement utilisé. Exemple: En SVN, les branches sont gérées sur le serveur et le temps de création des branches puis de bascule d'une branche à l'autre est rédhibitoire. Avec Git, les branches sont très simples à gérer et le passage entre deux branches est quasi instantané.
  46. 46. G I T F LO W 46  En 2010, Vincent Driessen publie un article intitulé A successful Git branching model (http://nvie.com/posts/a-successful-git-branching-model/) proposant une méthodologie efficace pour gérer les projets avec Git grâce aux branches.  Cette méthodologie a été rapidement adoptée par beaucoup de grands acteurs du développement, notamment dans le cadre de méthodologie agile.
  47. 47. G I T F LO W 47
  48. 48. G I T F LO W 48  Branches pérennes master : branche correspondant au code en production develop : branche correspondant au code en développement  Branches transitoires Feature : pour toute nouvelle fonctionalité ou correction de bug Hotfix: correction de bug en production Release : livraison Principaux points
  49. 49. G I T F LO W 49 Une surcouche à Git en mode commande est également disponible mettant en oeuvre de manière explicite les principes de GitFlow.Toutefois, elle n'est pas indispensable. Remarque http://danielkummer.github.io/git-flow-cheatsheet/index.fr_FR.html
  50. 50. C O M M E N T G I T G E R E L E S B R A N C H E S ? 50  Chaque commit entraîne la création d'un instantané identifié par un numéro unique. Avec Git, une branche est simplement un pointeur vers un instantané  Un pointeur spécial, HEAD, indique la branche courante.
  51. 51. C O M M E N T G I T G E R E L E S B R A N C H E S ? 51  Créer une nouvelle branche revient donc à ajouter un nouveau pointeur sur l'instantané courant.  Changer de branche consiste à basculer vers l'instantané pointé par la branche et à mettre à jour le pointeur HEAD.
  52. 52. C O M M E N T G I T G E R E L E S B R A N C H E S ? 52  Lors des commits suivants seul le pointeur de la branche actuelle va se déplacer.
  53. 53. L E S F U S I O N S 53 Deux cas se présentent en général 1. La branche qui va recevoir la fusion est un ancêtre de la branche à fusionner 2. La branche qui va recevoir la fusion n'est pas un ancêtre de la branche à fusionner
  54. 54. L E S F U S I O N S 54 Ce cas est très simple, la fusion revient simplement à déplacer le curseur de la branche recevante sur l'instantané pointé par la branche à fusionner. Cas 1 : La branche qui va recevoir la fusion est un ancêtre de la branche à fusionner Avant fusion Après fusion
  55. 55. L E S F U S I O N S 55 Ce cas est potentiellement compliqué car certains fichiers ont pu être modifiés dans les deux branches, il va falloir fusionner ces fichiers via un nouvel instantané. Cas 2 : La branche qui va recevoir la fusion n'est pas un ancêtre de la branche à fusionner Avant fusion Après fusion
  56. 56. Les branches Partie 2 : la pratique
  57. 57. C R É E R U N E B R A N C H E 57 La branche courante est indiquée à droite de la barre de statut. Par défaut, la 1ère branche s'appelle master. Pour créer une nouvelle branche et basculer dessus :  Cliquez sur la branche actuelle afin de faire apparaitre le menu déroulant et sélectionnez l'action New Branch
  58. 58. C R É E R U N E B R A N C H E 58  Dans la boite de dialogue, indiquez le nom de la nouvelle branche :develop  La vue Log affiche les deux branches au niveau du dernier commit
  59. 59. C R É E R U N E B R A N C H E 59  La barre de statut indique désormais develop comme branche actuelle. Créez de la même manière une branche nommée feature_MaFonction et basculez dessus.
  60. 60. B A S C U L E R D ’ U N E B R A N C H E A L’A U T R E 60  Le menu déroulant des branches indique les différentes branches présentes  Pour basculer d'une branche à l'autre, il suffit de chosir la branche cible dans le menu et de cliquer sur Checkout La bascule est très rapide car totalement locale.
  61. 61. B A S C U L E R D ’ U N E B R A N C H E A L’A U T R E 61  Remarque : le fichier fichier3.txt est présent dans la nouvelle branche.
  62. 62. F U S I O N S I M P L E ( FA S T F O R WA R D) 62  Dans fichier1.txt ajoutez une nouvelle ligne (Ligne ajoutée dans MaFonction) Ajoutez un fichier fichier4.txt avec comme contenu la ligne Contenu du fichier4.txt  Commitez le fichier 1 et le fichier 4 avec un commentaire identifié (modification pour MaFonction)  Basculez sur la branche develop (le fichier fichier1.txt est affiché dans son état antérieur, le fichier fichier4.txt absent)  Dans le menu des branches, sélectionnez la branche feature_MaFonctionet cliquez sur merge
  63. 63. F U S I O N S I M P L E ( FA S T F O R WA R D) 63  Le fichier 1 modifié et le fichier 4 sont bien présents  En fait Git n'a fait que déplacer le pointeur de la branche develop sur la branche feature_MaFonction
  64. 64. F U S I O N AV E C C O N F L I T 64  Supprimez le fichier fichier3.txt  Demandez la fusion avec la branche Hotfix_1  Il y a dans ce cas, un conflit avec les deux versions de fichier1.txt  Cliquez sur Merge. Dans la boite de dialogue, fusionnez manuellement les deux fichiers Validez en cliquant sur Apply.
  65. 65. F U S I O N AV E C C O N F L I T 65  La situation est alors la suivante : Notez la présence du commit de fusion.
  66. 66. S U P P R E S S I O N D E B R A N C H E 66 Les branches Hotfix_1 et feature_MaFonction sont des branches temporaires. Elles peuvent être supprimées.  Dans le menu des branches, sélectionnez chacune de ces deux branches et cliquez sur Delete Remarque: Git vous avertit si vous tentez de supprimer une branche n'ayant jamais été fusionnée
  67. 67. Échanger avec d'autres développeurs : les dépôts distants
  68. 68. L E S D E P O T S D I S TA N T S ( R E M O T E ) 68 Objectifs  Les dépots vont permettre aux développeurs de partager leur travail.  Ils peuvent aussi servir de dépôt de référence pour l'intégration continue Git offre beaucoup de souplesse dans la gestion des dépôts distants :  Nature (cloud, disque partagé, clé usb...)  Protocole (SSH, Git, HTTPS...)  Nombre (utilisation de plusieurs dépôts...)  Structure (communication directe entre développeur, serveur central ...) Dans notre exercice nous allons créer un dépôt distant ...local au poste de travail.
  69. 69. C R E AT I O N D U D E P O T D I S TA N T 69  Dans un terminal créez un répertoire monDepotGit.git  Entrez dans le répertoire Tapez la commande git init –bare Remarque: par convention, le nom des dépôts Git finit par .git
  70. 70. C O N N E X I O N A U D E P O T D I S TA N T 70  Dans Pycharm, via le menu contextuel du projet, utilisez la commande Git > Repository > Push Push est la commande qui indique à Git de transférer des fichiers vers le dépôt distant.
  71. 71. C O N N E X I O N A U D E P O T D I S TA N T 71  Dans la fenêtre qui s'ouvre cliquez sur Define remote  Laissez le nom origin  Indiquez comme URL l'adresse de votre dépôt distant et validez en cliquant sur Ok
  72. 72. C O N N E X I O N A U D E P O T D I S TA N T 72  origin est le nom d'usage pour le serveur distant central.  L'URL indique le protocole de connexion : HTTPS : https://github.com/francoisandre/gtdrosea_workshop.git SSH : git@github.com:francoisandre/gtdrosea_workshop.git  Finalisez le transfert en Cliquant sur Push tags Cliquant sur Push Remarques
  73. 73. C O N N E X I O N A U D E P O T D I S TA N T 73
  74. 74. R E C U P E R AT I O N D U D E P O T D I S TA N T 74 Nous allons récupérer le projet à partir du dépôt distant pour simuler un deuxième développeur Dans le menuVCS, SélectionnezCheckout fromVersion Control puis Git Le terme Checkout est ici inadapté, il s'agit d'un Clone qui va - par défaut - récupérer l'intégralité de l'historique du projet
  75. 75. R E C U P E R AT I O N D U D E P O T D I S TA N T 75  Indiquez l'adresse du dépôt distant  Indiquez comme nom de projet monProjetDev2 Validez en cliquant sur Clone Validez les boîtes de dialogues qui apparaissent alors et indiquez que vous souhaitez voir le projet dans une nouvelle fenêtre Dans la barre de statut vous remarquez que Git est activé et pointe alors sur la branche master qui n'existe pas dans notre dépôt distant.
  76. 76. R E C U P E R AT I O N D U D E P O T D I S TA N T 76  Dans la barre de statut, choisissez la branche develop et cliquez sur Checkout as new local branch... A l'issue du traitement, on retrouve le projet complet dans l'environnement du deuxième développeur
  77. 77. T R A N S F E R T D U C O M M I T ( P U S H ) 77  Dans monProjetDev2, créez un fichier fichier5.txt avec comme contenuContenu du fichier fichier5.txt  Faites un commit de ce fichier, mais dans la fenêtre de commit • Indiquez comme auteur Developpeur 2 • Choisissez l'option Commit and push...  Cliquez sur Push dans la fenêtre suivante Le contenu du commit a été transféré sur le dépôt distant
  78. 78. R E C U P E R AT I O N D U C O M M I T ( P U L L ) 78  Dans monProjet, à partir du menu contextuel du projet choisissez Git > Repository > Pull Validez la fenêtre suivante en cliquant sur Pull
  79. 79. R E C U P E R AT I O N D U C O M M I T ( P U L L ) 79  Le commit contenant fichier5.txt a été récupéré dans monProjet
  80. 80. R E M A R Q U E S S U R L E S R E M O T E S 80 Avec les remotes, les développeurs vont être confrontés aux problèmes classiques de fusions, vus précédemment  Des nouveaux problèmes vont apparaître : suppression de branches distantes, ...
  81. 81. Conclusion
  82. 82. P O U R A L L E R P L U S LO I N 82  Pro Git (par Scott Chacon) • Ouvrage de référence • Disponible gratuitement en français : https://git-scm.com/book/fr/v2(différents formats: pdf, html, epub...) Tutoriel(s) • http://www.grafikart.fr/formations/git
  83. 83. Merci www.aeris-data.fr Modèle de présentation : ttp://thepopp.com/ - Jun Akizak

×