SlideShare une entreprise Scribd logo
1  sur  83
Télécharger pour lire hors ligne
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 stratégie de gestion des projets
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 son travail en même temps
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)
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é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
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
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, 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.
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
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 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
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
 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
 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
Manipulations locales
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
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.
 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
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
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.
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 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
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 à 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
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
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
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
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
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
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
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
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 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...
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
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
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.
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...
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é.
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 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é.
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.
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 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
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
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.
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.
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.
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
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
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
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 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
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
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.
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.
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.
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
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
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.
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. 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
É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 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.
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
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.
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
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
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 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
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.
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
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
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
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 classiques de fusions,
vus précédemment
 Des nouveaux problèmes vont apparaître : suppression de branches distantes, ...
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çais : https://git-scm.com/book/fr/v2(différents formats:
pdf, html, epub...)
Tutoriel(s)
• http://www.grafikart.fr/formations/git
Merci
www.aeris-data.fr
Modèle de présentation : ttp://thepopp.com/ - Jun Akizak

Contenu connexe

Tendances (20)

Git One Day Training Notes
Git One Day Training NotesGit One Day Training Notes
Git One Day Training Notes
 
Formation autour de git et git lab
Formation autour de git et git labFormation autour de git et git lab
Formation autour de git et git lab
 
Tutorial Git
Tutorial GitTutorial Git
Tutorial Git
 
Git training v10
Git training v10Git training v10
Git training v10
 
Git and github 101
Git and github 101Git and github 101
Git and github 101
 
Git and GitFlow branching model
Git and GitFlow branching modelGit and GitFlow branching model
Git and GitFlow branching model
 
Advanced Git Tutorial
Advanced Git TutorialAdvanced Git Tutorial
Advanced Git Tutorial
 
Intro to git and git hub
Intro to git and git hubIntro to git and git hub
Intro to git and git hub
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
 
Git in 10 minutes
Git in 10 minutesGit in 10 minutes
Git in 10 minutes
 
Source control
Source controlSource control
Source control
 
Introduction git
Introduction gitIntroduction git
Introduction git
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
Git
GitGit
Git
 
Git
GitGit
Git
 
Git basics
Git basicsGit basics
Git basics
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
 
Git workflows
Git workflowsGit workflows
Git workflows
 
Git - An Introduction
Git - An IntroductionGit - An Introduction
Git - An Introduction
 
Git n git hub
Git n git hubGit n git hub
Git n git hub
 

En vedette

Git Flow: un processus de développement Agile
Git Flow: un processus de développement AgileGit Flow: un processus de développement Agile
Git Flow: un processus de développement AgileXavier Hausherr
 
Git vs SVN
Git vs SVNGit vs SVN
Git vs SVNneuros
 
Paul valery et les Web components
Paul valery et les Web componentsPaul valery et les Web components
Paul valery et les Web componentsFrancois ANDRE
 
Découvrir et utiliser Git : le logiciel de gestion de versions décentralisé
Découvrir et utiliser Git : le logiciel de gestion de versions décentraliséDécouvrir et utiliser Git : le logiciel de gestion de versions décentralisé
Découvrir et utiliser Git : le logiciel de gestion de versions décentraliséECAM Brussels Engineering School
 
En quoi git serait plus agile que svn ?
En quoi git serait plus agile que svn ?En quoi git serait plus agile que svn ?
En quoi git serait plus agile que svn ?Guillaume Collic
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShareSlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShareSlideShare
 
Cas d'utilisation de la citation de données
Cas d'utilisation de la citation de donnéesCas d'utilisation de la citation de données
Cas d'utilisation de la citation de donnéesFrancois ANDRE
 
Présentation normes OGC
Présentation normes OGCPrésentation normes OGC
Présentation normes OGCFrancois ANDRE
 
Panorama citation des donnees
Panorama citation des donneesPanorama citation des donnees
Panorama citation des donneesFrancois ANDRE
 
Recommandations rda sur la citation des données
Recommandations rda sur la citation des donnéesRecommandations rda sur la citation des données
Recommandations rda sur la citation des donnéesFrancois ANDRE
 
Introduction aux web components
Introduction aux web componentsIntroduction aux web components
Introduction aux web componentsFrancois ANDRE
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShareSlideShare
 
C'est si simple git ! (devoxx france 2012)
C'est si simple git ! (devoxx france 2012)C'est si simple git ! (devoxx france 2012)
C'est si simple git ! (devoxx france 2012)Ulrich VACHON
 
Service WEB de type REST avec Java
Service WEB de type REST avec JavaService WEB de type REST avec Java
Service WEB de type REST avec JavaFrancois ANDRE
 
Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?
Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?
Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?Nicolas Ruffel
 

En vedette (20)

Git Flow: un processus de développement Agile
Git Flow: un processus de développement AgileGit Flow: un processus de développement Agile
Git Flow: un processus de développement Agile
 
Git vs SVN
Git vs SVNGit vs SVN
Git vs SVN
 
Paul valery et les Web components
Paul valery et les Web componentsPaul valery et les Web components
Paul valery et les Web components
 
Découvrir et utiliser Git : le logiciel de gestion de versions décentralisé
Découvrir et utiliser Git : le logiciel de gestion de versions décentraliséDécouvrir et utiliser Git : le logiciel de gestion de versions décentralisé
Découvrir et utiliser Git : le logiciel de gestion de versions décentralisé
 
Git flow in action
Git flow in actionGit flow in action
Git flow in action
 
En quoi git serait plus agile que svn ?
En quoi git serait plus agile que svn ?En quoi git serait plus agile que svn ?
En quoi git serait plus agile que svn ?
 
Git
GitGit
Git
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShare
 
Cas d'utilisation de la citation de données
Cas d'utilisation de la citation de donnéesCas d'utilisation de la citation de données
Cas d'utilisation de la citation de données
 
Présentation normes OGC
Présentation normes OGCPrésentation normes OGC
Présentation normes OGC
 
Panorama citation des donnees
Panorama citation des donneesPanorama citation des donnees
Panorama citation des donnees
 
TP GWT JDEV 2015
TP GWT JDEV 2015TP GWT JDEV 2015
TP GWT JDEV 2015
 
Recommandations rda sur la citation des données
Recommandations rda sur la citation des donnéesRecommandations rda sur la citation des données
Recommandations rda sur la citation des données
 
Introduction aux web components
Introduction aux web componentsIntroduction aux web components
Introduction aux web components
 
Formation gwt
Formation gwtFormation gwt
Formation gwt
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
 
C'est si simple git ! (devoxx france 2012)
C'est si simple git ! (devoxx france 2012)C'est si simple git ! (devoxx france 2012)
C'est si simple git ! (devoxx france 2012)
 
Service WEB de type REST avec Java
Service WEB de type REST avec JavaService WEB de type REST avec Java
Service WEB de type REST avec Java
 
Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?
Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?
Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?
 

Similaire à Tutoriel GIT

Travailler avec git et eclipse
Travailler avec git et eclipseTravailler avec git et eclipse
Travailler avec git et eclipseFrancois ANDRE
 
Initiation à Git, GitHub2.pdf
Initiation à Git, GitHub2.pdfInitiation à Git, GitHub2.pdf
Initiation à Git, GitHub2.pdfmouad55
 
les commandes Git que vous devez absolument connaitre!.pdf
les commandes Git que vous devez absolument connaitre!.pdfles commandes Git que vous devez absolument connaitre!.pdf
les commandes Git que vous devez absolument connaitre!.pdfSimpleLearn1
 
Le système de versioning git
Le système de versioning gitLe système de versioning git
Le système de versioning gitNassim Bahri
 
GIT training - basic for software projects
GIT training - basic for software projectsGIT training - basic for software projects
GIT training - basic for software projectsThierry Gayet
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphipprem
 
Débuter avec Git & github
Débuter avec Git & githubDébuter avec Git & github
Débuter avec Git & githubMonoem Youneb
 
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 versiongoldoraf
 
Git & Rstudio vincent guyader
Git & Rstudio vincent guyaderGit & Rstudio vincent guyader
Git & Rstudio vincent guyaderVincent Guyader
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Ippon
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipelineNicolas wallerand
 
Introduction à git.pdf
Introduction à git.pdfIntroduction à git.pdf
Introduction à git.pdfbadrfathallah2
 
Présentation du versioning avec Git
Présentation du versioning avec GitPrésentation du versioning avec Git
Présentation du versioning avec Gitmsadouni
 
A la découverte de redo
A la découverte de redoA la découverte de redo
A la découverte de redoThierry Gayet
 

Similaire à Tutoriel GIT (20)

Travailler avec git et eclipse
Travailler avec git et eclipseTravailler avec git et eclipse
Travailler avec git et eclipse
 
Initiation à Git, GitHub2.pdf
Initiation à Git, GitHub2.pdfInitiation à Git, GitHub2.pdf
Initiation à Git, GitHub2.pdf
 
les commandes Git que vous devez absolument connaitre!.pdf
les commandes Git que vous devez absolument connaitre!.pdfles commandes Git que vous devez absolument connaitre!.pdf
les commandes Git que vous devez absolument connaitre!.pdf
 
Le système de versioning git
Le système de versioning gitLe système de versioning git
Le système de versioning git
 
GIT training - basic for software projects
GIT training - basic for software projectsGIT training - basic for software projects
GIT training - basic for software projects
 
git.pdf
git.pdfgit.pdf
git.pdf
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphi
 
3_SCM_Git.pdf
3_SCM_Git.pdf3_SCM_Git.pdf
3_SCM_Git.pdf
 
Débuter avec Git & github
Débuter avec Git & githubDébuter avec Git & github
Débuter avec Git & github
 
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 & Rstudio vincent guyader
Git & Rstudio vincent guyaderGit & Rstudio vincent guyader
Git & Rstudio vincent guyader
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
 
GIT Fundamentals
GIT FundamentalsGIT Fundamentals
GIT Fundamentals
 
Introduction à git.pdf
Introduction à git.pdfIntroduction à git.pdf
Introduction à git.pdf
 
Outils de gestion de projets
Outils de gestion de projetsOutils de gestion de projets
Outils de gestion de projets
 
Présentation du versioning avec Git
Présentation du versioning avec GitPrésentation du versioning avec Git
Présentation du versioning avec Git
 
graylog.pptx
graylog.pptxgraylog.pptx
graylog.pptx
 
Get startedwithgit2
Get startedwithgit2Get startedwithgit2
Get startedwithgit2
 
A la découverte de redo
A la découverte de redoA la découverte de redo
A la découverte de redo
 

Tutoriel GIT

  • 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. 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
  • 4. Pourquoi ?Utiliser un Source Code Manager
  • 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. 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. 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
  • 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. 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
  • 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. 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
  • 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. 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.  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.  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
  • 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. A J O U T E R G I T A U N P R O J E T 21
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. C O N S U LT E R L’ H I S T O R I Q U E 37
  • 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. 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. 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. 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. 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. 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. Les branches Partie 1 : la théorie
  • 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. 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. G I T F LO W 47
  • 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. 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. 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. 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. 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. 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. 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. 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. Les branches Partie 2 : la pratique
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Échanger avec d'autres développeurs : les dépôts distants
  • 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. 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. 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. 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. 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. C O N N E X I O N A U D E P O T D I S TA N T 73
  • 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. 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. 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. 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. 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. 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. 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, ...
  • 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. Merci www.aeris-data.fr Modèle de présentation : ttp://thepopp.com/ - Jun Akizak