SlideShare une entreprise Scribd logo
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

PPTX
Présentation Git & GitHub
PPTX
Versioning avec Git
PPT
Git l'essentiel
PPTX
Présentation de git
PPTX
Git and GitHub
PDF
Formation autour de git et git lab
PDF
Git et les systèmes de gestion de versions
PPTX
Git 101 for Beginners
Présentation Git & GitHub
Versioning avec Git
Git l'essentiel
Présentation de git
Git and GitHub
Formation autour de git et git lab
Git et les systèmes de gestion de versions
Git 101 for Beginners

Tendances (20)

PDF
Advanced Git Tutorial
PDF
Git and github 101
PPTX
Introduction to Gitlab | Gitlab 101 | Training Session
PDF
Git real slides
PPTX
Git basics to advance with diagrams
PDF
Git pour les (pas si) nuls
PPTX
Introduction git
PPTX
Git - Basic Crash Course
PDF
Git and git flow
PDF
Git - An Introduction
PDF
Github - Git Training Slides: Foundations
PDF
Gitlab flow solo
PPTX
Git y Github basico.pptx
PDF
Git basics
PPTX
Git Branch
KEY
Introduction To Git
PPTX
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
PDF
A Practical Introduction to git
PDF
Introduzione a Git (ITA - 2017)
PDF
Git training v10
Advanced Git Tutorial
Git and github 101
Introduction to Gitlab | Gitlab 101 | Training Session
Git real slides
Git basics to advance with diagrams
Git pour les (pas si) nuls
Introduction git
Git - Basic Crash Course
Git and git flow
Git - An Introduction
Github - Git Training Slides: Foundations
Gitlab flow solo
Git y Github basico.pptx
Git basics
Git Branch
Introduction To Git
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
A Practical Introduction to git
Introduzione a Git (ITA - 2017)
Git training v10
Publicité

En vedette (20)

PDF
Git Flow: un processus de développement Agile
PPT
Git vs SVN
PPTX
Paul valery et les Web components
PDF
Découvrir et utiliser Git : le logiciel de gestion de versions décentralisé
PDF
Git flow in action
PPTX
En quoi git serait plus agile que svn ?
PDF
2015 Upload Campaigns Calendar - SlideShare
PPTX
What to Upload to SlideShare
PDF
Cas d'utilisation de la citation de données
PDF
Présentation normes OGC
PDF
Panorama citation des donnees
PDF
TP GWT JDEV 2015
PDF
Recommandations rda sur la citation des données
PDF
Introduction aux web components
PDF
Formation gwt
PDF
Getting Started With SlideShare
ODP
C'est si simple git ! (devoxx france 2012)
PDF
Service WEB de type REST avec Java
Git Flow: un processus de développement Agile
Git vs SVN
Paul valery et les Web components
Découvrir et utiliser Git : le logiciel de gestion de versions décentralisé
Git flow in action
En quoi git serait plus agile que svn ?
2015 Upload Campaigns Calendar - SlideShare
What to Upload to SlideShare
Cas d'utilisation de la citation de données
Présentation normes OGC
Panorama citation des donnees
TP GWT JDEV 2015
Recommandations rda sur la citation des données
Introduction aux web components
Formation gwt
Getting Started With SlideShare
C'est si simple git ! (devoxx france 2012)
Service WEB de type REST avec Java
Publicité

Similaire à Tutoriel GIT (20)

PDF
Travailler avec git et eclipse
PDF
Initiation à Git, GitHub2.pdf
PDF
les commandes Git que vous devez absolument connaitre!.pdf
DOCX
Le système de versioning git
PPTX
gwxcwwxcwxcwxcwxcwxcwxcwxcwxcwxcwxcit.pptx
PPTX
Intro-to-GitHub-Revolutionizing-Version-Control-and-Collaboration.pptx
PDF
PDF
Utilisation de git avec Delphi
PPTX
Git utilisation quotidienne
PDF
3_SCM_Git.pdf
PDF
5. Approche Agile_gestion de version et qualité du code.pdf
PDF
Débuter avec Git & github
PDF
Git ou le renouveau du contrôle de version
PDF
Git & Rstudio vincent guyader
PPTX
Presentation-git-ddddddddddddgithub.pptx
PDF
Formation GIT gratuite par ippon 2014
PDF
Chaine de production pipeline
PPTX
GIT Fundamentals
PDF
Introduction à git.pdf
Travailler avec git et eclipse
Initiation à Git, GitHub2.pdf
les commandes Git que vous devez absolument connaitre!.pdf
Le système de versioning git
gwxcwwxcwxcwxcwxcwxcwxcwxcwxcwxcwxcit.pptx
Intro-to-GitHub-Revolutionizing-Version-Control-and-Collaboration.pptx
Utilisation de git avec Delphi
Git utilisation quotidienne
3_SCM_Git.pdf
5. Approche Agile_gestion de version et qualité du code.pdf
Débuter avec Git & github
Git ou le renouveau du contrôle de version
Git & Rstudio vincent guyader
Presentation-git-ddddddddddddgithub.pptx
Formation GIT gratuite par ippon 2014
Chaine de production pipeline
GIT Fundamentals
Introduction à git.pdf

Dernier (7)

PDF
FORMATION EN Programmation En Langage C.pdf
PPTX
Presentation_Securite_Reseaux_Bac+2.pptx
PDF
Tendances tech 2025 - SFEIR & WENVISION.pdf
PDF
FORMATION COMPLETE EN EXCEL DONE BY MR. NYONGA BRICE.pdf
PDF
presentation_with_intro_compressee IEEE EPS France
PDF
Modems expliqués- votre passerelle vers Internet.pdf
PPTX
Souveraineté numérique - Définition et enjeux pour les entreprises et les dév...
FORMATION EN Programmation En Langage C.pdf
Presentation_Securite_Reseaux_Bac+2.pptx
Tendances tech 2025 - SFEIR & WENVISION.pdf
FORMATION COMPLETE EN EXCEL DONE BY MR. NYONGA BRICE.pdf
presentation_with_intro_compressee IEEE EPS France
Modems expliqués- votre passerelle vers Internet.pdf
Souveraineté numérique - Définition et enjeux pour les entreprises et les dév...

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