SlideShare une entreprise Scribd logo
Préface
Ce manuel constitue un simple guide pour débuter avec le système de gestion de version git. Ce
guide n’est pas une référence complète que vous utilisez en cas de besoin. Ce document vous
guidera dans votre apprentissage et vous donnera les premiers pas pour commencer avec les
systèmes de gestion de version.
La documentation complète du système git est disponible en anglais (http://git-scm.com/book/) et
en français (http://git-scm.com/book/fr). Vous pouvez aussi essayer git en ligne en suivant le lien
http://try.github.com/
-Nassim BAHRI-
Le système de versioning git
Introduction
Lorsque vous travailler sur un projet en équipe, le problème majeur rencontré consiste en la
modification d’un fichier par plusieurs utilisateurs ainsi que la gestion des conflits. Dans ce cas un
système de versioning sera un outil indispensable.
Le système de gestion de version est un logiciel qui enregistre l’évolution d’un ou plusieurs fichiers
au cours du temps, en gardant la trace de toutes les modifications effectuées, de manière à ce qu’on
puisse rappeler une version antérieure d’un fichier à tout moment.
Parmi les fonctionnalités basiques d’un tel système, nous pouvons citer :
 Conserver un historique de toutes les modifications,
 Possibilité de travailler à plusieurs (grâce aux fonctions de verrous et de gestion des conflits),
 Permettre la modification parallèle des fichiers (le système de branches).
Différents modèles
Brièvement, les systèmes de gestion de version proposent trois modèles de travail que vous pouvez
choisir l’un d’entre eux selon vos besoins.Nous commençons à détaillé ces différents modèles.
1. Le modèle local
C’et laméthode la plus courante et quise matérialise dans la copie des fichiers de travail dans un
autre répertoire sur le même ordinateur. Cette méthode est la plus simple et adapté lorsqu’un seul
utilisateur travaille sur le projet. Ce modèle peut être résumé par laFigure 1.
Figure 1 : Les systèmes de gestion de version locaux
2. Le modèle centralisé
Lorsque vous travailler en groupe, vous allez vous retrouver avec un problème courent; les
développeurs ont besoin de collaborer sur des stations différentes. Il est donc impossible d’utiliser le
modèle local. La solution sera donc de centraliser les fichiers sur un ordinateur qui sera accessible par
tous les membres de l’équipe. Et c’est ça le principe d’un tel modèle qui met en place un serveur
central contenant tous les fichiers sous gestion de version, et des clients qui peuvent extraire les
fichiers de ce dépôt. Ce modèle peut être résumé par la Figure 2.
Figure 2 : Les systèmes de gestion de version centralisés
Cependant, ce modèle présente un risque majeur que la panne du serveur centralisé présente. En
effet, si le serveur tombe en panne tous les collaborateurs seront bloqués et ne peuvent pas
enregistrer les modifications issues de leurs travails. Ils risquent aussi de tous perdre si le disque dur
du serveur se corrompt.
3. Le modèle distribué
Suite aux problèmes que présente le modèle centralisé, les systèmes de gestion de version distribués
entent en jeu. L’apport de ce nouveau modèle est que les clients n’extraient pas seulement la
dernière version du fichier mais ils dupliquent tous le dépôt, c'est-à-dire stocker toutes les versions
du fichier dans un dépôt local (présenté dans le paragraphe 1). Ainsi si le serveur tombe en panne, il
peut être restauré en se serviront du dépôt d’un des clients. La Figure 3 résume ce dernier modèle.
Choix du système de versioning
Sur le marché, plusieurs logiciels permettent la gestion de version. Nous présentons dans le Tableau
1 quelques logiciels libres.
Gestion locale GNU RCS (1982)
Gestion centralisée CVS (1990), CVSNT(1992), SVN(2000)
Gestion distribuée SVK(2003), Git(2005), Fossil(2007)
Tableau 1 : Exemples des logiciels de gestion de version
D’après la comparaison entre les différents modèles de gestion de version que nous avons faite dans
les paragraphes précédents, nous pouvons relever que les systèmes de gestion distribuée semblent
être les meilleurs. Parmi les logiciels de gestion distribués, « git » est le mieux adaptés vu les
caractéristiques qu’il présente :
 Vitesse,
 Conception simple,
 Support pour le développement non linéaire (possibilité de travailler à plusieurs),
 Complétement distribué,
 Disponible sur plusieurs plateformes (Windows, Linux, Mac os),
 Plusieurs clients existants (GitHub, Gitbox, sourceTree,...).
Figure 3 : Les systèmes de gestion de version distribués
Bien démarrer avec git : Installation
Avant de commencer à utiliser n’importe quel logiciel, il faut dans un premier temps l’installer. Nous
verrons dans cette section comment installer le système de gestion de version git sous Windows.
Pour les autres plateformes notamment Linux et Mac os vous pouvez suivre les instructions décrite
dans le lien suivanthttp://git-scm.com/book/fr/D%C3%A9marrage-rapide-Installation-de-Git.
Pour installer git, rien de complexe. Rendez-vous sur la page de téléchargement via ce lien http://git-
scm.com/downloads et télécharger la version adéquate avec votre système d’exploitation.
Figure 4 : Télécharger git
Une fois le téléchargement est terminé, lancez le fichier exécutable.
Figure 5 : Lancement de l'installation
Figure 6 : Licence GPL et conditions d’utilisation
Figure 7 : Chemin d'installation
Choisissez par la suite l’emplacement d’installation de git sur votre ordinateur.
Une fois vous avez mentionné l’emplacement de l’installation, il vous est
demandé de choisir les composants à installer avec git. Vous devez donc cocher
les deux cases Git Bach Here et Git GUI Here.
Figure 8 : Choisir les composants à installer
Choisissez le dossier où vous voulez créer les raccourcis et ajouter par la suite git
au PATH de votre ordinateur.
Figure 9 : dossier contenant les raccourcis
Figure 10 : Ajouter git au PATH
Figure 11 : Choisissez le mode de traitement
Figure 12 : git en cours d'installation
Figure 13 : Installation terminée
Passons maintenant aux choses sérieuses : la configuration et l’installation de git.
Par défaut git nous propose deux modes d’utilisation ;un mode graphique et un
mode en utilisant les lignes de commande. Nous intéresserons dans les sections
suivantes à l’utilisation de git avec les lignes de commande puisqu’il est plus
complexe que le mode graphique.
Il est à noter que nous pouvons utiliser plusieurs client git qui nous permet la
simplification de quelque tâches. Parmi les clients gratuits :
 GitHub (http://windows.github.com/) / (http://mac.github.com/)
 Git Extension (https://code.google.com/p/gitextensions/)
 SourceTree (http://www.sourcetreeapp.com/)
 GitEye (http://www.collab.net/giteyeapp)
Bien démarrer avec git : Configuration
Lors de la première utilisation du gestionnaire de version git vous devez configurer certains
paramètres notamment le nom de l’utilisateur et l’adresse email qui seront utiles pour identifier les
utilisateurs qui ont validés des modifications par la suite.
 Modifier le nom de l’utilisateur
Git config --global user.name ‘nom utilisateur’
 Modifier l’adresse email
Git config --global user.email ‘email@exemple.com’
 Afficher la liste des informations de configuration
Git config --list
 Obtenir l’aide
Git help [commande]
Bien démarrer avec git : Les bases de git
Dans cette section nous illustrons les différents fonctionnalités de git avec un exemple réel.
 Créer un projet git
Dans un premier lieu, vous commencer à créer votre projet. Lancer ‘Git bash’ que vous avez installé
avec git et positionner vous dans le répertoire de votre projet.
Cd /c/wamp/www/monProjet
Supposons que nous sommes en train de développer une application web, donc notre projet sera
sous le répertoire www de notre serveur.
Dans une seconde étape il faut initialiser git
Git init
Cette commande crée les fichiers contenant les informations nécessaires pour le contrôle du projet.
 Vérifier l’état des fichiers
On suppose que nous ayons créé le fichier index.php qui affiche le fameux message ‘Hello World’ et
nous voulons vérifier l’état des fichiers de notre projet, il suffit de taper la commande
Git status
Il faut savoir que le cycle de vie des états d’un fichier est le suivant :
 Untracked : le fichier n’est pas sous le contrôle du gestionnaire de version,
 Unmodified : le fichier n’est pas modifié,
 Modified : le fichier a été modifié,
 Staged : mis en scène, en attente de validation (commit).
Le résultat de notre commande
Figure 14 : Résultat de la commande git init
Nous pouvons constater que le fichier index.php est dans un état untracked. Pour ajouter ce fichier
sous le contrôle de git, nous devons tapez la commande
Git add index.php
Git status
Figure 15 : Résultat de la commande git status
Nous pouvons constater que notre fichier a passé vers un état staged.
 Valider les modifications
A ce stade nous pouvons valider nos modifications
Git commit –m ‘un message’
Nous pouvons aussi consulter la liste de nos commit en tapant la commande
Git log [-p] [-2]
-p : permet d’afficher la différence entre chaque validation
-2 : le nombre maximal à afficher
 Différence entre les fichiers
Des fois, nous avons besoins de voir la différence entre les fichiers avant de valider les modifications.
La commande qui nous servi pour cette opération est :
Git diff
Nous pouvons aussi voir la différence du dernier commit
Git diff HEAD
Ou bien voir les modifications mises en scène (en attende d’un commit)
Git diff --staged
 Eliminer la phase d’indexation avant le commit
Avant de valider les modifications, il faut ajouter les fichiers modifiés dans la zone d’index en utilisant
la commande
Git add nom_fichier
Nous pouvons donc éliminer cette étape en passant directement par la commande suivante
Git commit –a –m ‘mon message’
En effet, si nous avons des nouveaux fichiers il faut impérativement passer par la commande
Git add nom_fichier
 Suppression /déplacement d’un fichier
Parfois nous avons besoin de supprimer ou de déplacer un fichier vers un autre répertoire. Dans ce
cas il faut indiquer à git que vous avez fait une modification dans la structure de votre projet. Les
commande qui nous servi dans ce cas sont :
Git rm nom_fichier (pour la suppression d’un fichier)
Git mv fichier_origine cible (pour le déplacement d’un fichier)
 Modifier le dernier commit
Supposons que lors de notre dernière validation nous avons oublié de mettre un fichier sous contrôle
de version, donc il ne sera pas pris en compte lors de ce commit. Au lieu de créer un autre commit,
nous pouvons modifier le dernier commit en ajoutant ce fichier. La commande qui permet de
modifier une commit est la suivante :
Git commit –amend
Exemple :
Touch liste.php
Git commit –m ‘mon dernier commit’ # Dans ce cas le fichier
liste.php n’est pas pris en compte
Git add liste.php
Git commit --amend
La dernière ligne permet de modifier le commit en ajoutant le fichier liste.php
 Désindexer un fichier
Parfois nous avons besoin de garder un ou plusieurs fichiers en privé
Figure 16 : Arborescente du projet
Nous avons créé les deux répertoires css et images ainsi que les fichiers script.js et private.txt. Nous
voulons mettre tous les fichiers de ce projet sous contrôle de version sauf le fichier private.php. Nous
pouvons donc faire :
Git add *
Git reset HEAD private.php
 Réinitialiser un fichier
Le but de l’utilisation d’un gestionnaire de version est de récupérer une version antérieure d’un
fichier modifié. La commande qui nous permet d’effectuer cette opération est :
Git checkout --nom_fichier
 Afficher les étiquettes (tags)
L’étiquetage est une technique utilisé pour marquer un état de publication. Par exemple marquer le
dernier commit comme étant la version 1.0 de ce projet. Nous pouvons afficher la liste des tags en se
serviront de la commande :
Git tag
 Créer une étiquette
Pour la création d’une étiquette rien de complexe :
Git tag –a 1.0 –m ‘un message’
1.0 : c’est le nom de l’étiquette
Figure 17 : Créer une étiquette
 Afficher les informations d’une étiquette
Pour afficher les informations d’une étiquette, la commande est :
Git show nom_etiquette
Figure 18 : Afficher les étiquettes
 Créer une branche
Les branches est l’un des éléments les plus importants lors de l’utilisation d’un gestionnaire de
version. Pour être simple, nous pouvons définir une branche comme un espace de travail séparé et
indépendant. Donc nous pouvons créer des branches pour chaque membre de l’équipe si on travaille
en groupe ou bien une branche pour le développement et une autre pour la production…
La commande qui permet la création d’une branche est :
Git branch nom_branche
 Basculer vers une autre branche
Pour passer d’une branche à une autre nous pouvons utiliser la commande
Git checkout nom_branche
Our bien la commande
Git checkout –b nom_branche
Cette commande permet de créer une branche et basculer automatiquement vers cette dernière.
 Fusionner deux branches
Une fois nous avons terminé notre travail et nous voulons fusionner nos deux branches, nous
utilisons la commande :
Git merge nom_branche
Dans ce cas le contenu de la branche nom_branche sera fusionné avec le contenu de la branche
actuelle (dans ce cas master).
Exemple d’utilisation :
Nous allons créer dans un premier lieu la branche « dev » qui sera consacré pour notre travail de
développement
Git branch dev
Par la suite nous basculons vers cette branche
Git checkout dev
Figure 19 : Basculer vers la branche dev
Créons maintenant le fichier produit.php
Touch produit.php
Git add produit.php
Figure 20 : Créer le fichier produit.php
Maintenant, il nous reste qu’à valider les modifications
Git commit –m ‘commit avec le fichier produit.php’
Figure 21 : Valider les modifications
Pour afficher les différentes branches, on utilise la commande
Git branch
Figure 22 : Lister les branches
La branche avec un Astérix est celle en cours. Nous revenons maintenant vers la branche master
Git checkout master
Figure 23 : Retour vers la branche master
Affichons le journal de modification
Git log
Figure 24 : Afficher le journal de modification
Nous pouvons constater que le dernier commit de la branche « dev » n’est pas pris en compte dans
cette branche et si on affiche la liste des fichiers de ce projet avec la commande « ls » nous pouvons
voir que le fichier produit.php n’a pas été ajouter.
Ls
Figure 25 : Lister le contenu du répertoire de travail
Maintenant nous pouvons fusionner le contenu des deux branches « dev » et « master » dans
« master »
Git merge dev
Figure 26 : Fusion des branches
Faisons un
Git log
Figure 27 : Afficher l'historique des modifications
 Supprimer une branche
Pour la suppression d’une branche, la commande est :
Git branche –d nom_branche
Il est à noter que si une branche contient des modifications validées et qui n’ont pas été fusionné
avec d’autres branches, il est impossible de supprimer cette dernière. Nous aurons le message :
Figure 28 : Supprimer une branche
 Afficher les dernières validations de chaque branche
Pour afficher le dernier commit de chaque branche, nous utilisons la commande
Git branch –v
 Les branches fusionnées
Pour afficher les branches fusionnées avec celle en cours, nous utilisons
Git branche --merge
Dans le cas contraire, nous utilisons
Git branch --no-merge
Notions avancées : travailler sur un dépôt distant
Dans la première partie de ce document, nous avons invoqué le besoin des développeurs à
collaborer sur des stations différentes. Et nous avons présenté le modèle répondant à ce type de
problème. Tout au long de cette partie nous supposons que notre serveur est configuré pour la prise
en compte du système git. Nous verrons dans la prochaine partie l’installation et la configuration de
git sur un serveur.
 Afficher les serveurs distants
Lorsque nous travaillons avec des dépôts distants, nous avons toujours un ensemble de serveur (url
des serveurs) enregistrés pour notre répertoire de travail. La commande qui nous permet d’afficher
la liste des serveurs enregistrés est :
Git remote
Cette commande permet d’afficher le nom court su serveur (en d’autre terme un alias du serveur)
Pour afficher les informations complètes sur le serveur notamment son nom et son url nous utilisons
Git remote –v
 Cloner un dépôt distant
La commande qui nous permet de cloner un dépôt distant sur notre machine est la suivante
Git clone url_serveur/nom_repertoire.git
Cette commande permet d’ajouter un nouveau serveur à notre projet avec l’adresse url_serveur et
l’alias origin.
 Ajouter un nouveau dépôt distant
La première étape à faire lorsque nous souhaitons travailler avec un dépôt distant consiste à ajouter
l’adresse de ce dernier à notre projet. Bien sûr cette étape est négligée si nous avons fait un clone.
Git remote add alias URL
Exemple:
Git add origin https://github.com/NassimBahri/Filgrane.git
 Récupérer depuis des dépôts distants
Pour obtenir les données des dépôts distants, il suffit de lancer la commande
Git fetch alias
Exemple :
Git fetch origin
Cette commande s'adresse au dépôt distant et récupère toutes les données de ce projet que vous ne
possédez pas déjà.
 Pousser le travail vers un dépôt distant
Une fois vous êtes satisfait avec votre copie locale, il est temps de la pousser vers le dépôt distant
afin de la partager avec les autres membres de l’équipe. La commande qui nous permet de pousser
notre travail est la suivante :
Git push alias branche
Nous pouvons aussi lancer cette commande en ajoutant un autre paramètre
Git push –u alias branche
-u permet de se souvenir de l’alias du serveur ainsi que la branche. La prochaine fois que nous
voulons pousser notre travail, il suffit de taper
Git push
 Inspecter un dépôt distant
La commande permettant d’afficher les informations sur un dépôt distant est
Git remote show alias
 Renommer / supprimer un dépôt distant
Pour changer l’alias d’un dépôt distant rien de complexe, il suffit de lancer la commande
Git remote rename old_alias new_alias
De même pour la suppression d’un dépôt distant
Git remote rm alias
 Fusionner le travail
Pour fusionner le contenu de la branche distante avec la mienne, nous lançons la commande
Git pull alias branche_distante
Exemple
Git pull origin master
Cette commande permet de fusionner le contenu de la branche distante master avec le contenu de
la branche actuelle du dépôt local.
Notions avancés : Installation de git sur un serveur
L’installation de git sur un serveur se diffère d’un hébergeur à un autre. Nous verrons dans cette
partie comment installer git sur les serveurs d’un hébergeur Français ; alwaysdata
(https://www.alwaysdata.com/).
1. Créer un compte et activer le ssh
Accédons à la page d’inscription et créons notre compte d’hébergement. Une fois notre compte a
bien été créé, nous accédons à notre espace d’administration via cette
url :https://admin.alwaysdata.com/.
Figure 29 : Formulaire de connexion
Introduisons notre adresse email et notre mot de passe pour accéder à notre panel d’administration.
Par la suite, nous devons activer notre compte ssh.
Figure 30 : Menu d'administration
Figure 31 : Liste des comptes ssh
Figure 32 : Activer le compte ssh
Maintenant il est temps de configurer notre serveur pour la prise en compte du système de
versioning git.
2. Se connecter à notre compte
Dans un premier lieu connectons-nous à notre serveur en mode ssh. Ouvrons alors ‘git bash’ et
tapons la commande suivante
Ssh conf@ssh.alwaysdata.com
Expliquons cette commande :
ssh : indique le mode de connexion
Conf : le login de notre compte d’hébergement
ssh.alwaysdata.com : l’adresse de notre serveur
Figure 33 : Connexion en mode ssh
L’arborescence de notre répertoire est la suivante :
3. Configuration de gitweb
La seconde étape de notre processus consiste à configurer gitweb. Tout au long de notre travail nous
considérons que nos dépôts git serons stockés dans le répertoire /home/conf/git
Dans le dossier /home/conf/cgi-bin créons un lien sur le CGI de gitweb à l’aide de la commande :
/home
www cgi-bin admin
user (conf)
/home
www cgi-bin admin git
user (conf)
Cd cgi-bin
ln -s /usr/lib/cgi-bin/gitweb.cgi
Créons ensuite le dossier contenant les fichiers nécessaire pout gitweb
cd ../www
mkdir gitweb
mkdir ../git
cd gitweb
cp /usr/share/gitweb/*.
Créons par la suite le fichier ‘.htaccess’ dans le dossier /home/conf/www, contenant ceci
DirectoryIndex /cgi-bin/gitweb.cgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}!-d
RewriteRule ^.* /cgi-bin/gitweb.cgi/$0 [L,PT]
Passons maintenant à la dernière étape, la configuration de gitweb. Dans le dossier /home/conf/cgi-
bin, créons un fichier ‘gitweb_config.perl’ contenant le code suivant :
# Path to git projects (<project>.git)
#le chemin que nous avons choisi pour nos dépôts git
$projectroot = "/home/conf/git";
# Directory to use for temp files
$git_temp = "/tmp";
# Target of the home link on top of all pages
#$home_link = $my_uri || "/";
# Html text to include at home page
$home_text = "indextext.html";
# file with project list; by default, simply scan the projectroot
dir.
$projects_list = $projectroot;
# Stylesheet to use
$stylesheet = "/gitweb/gitweb.css";
# Logo to use
$logo = "/gitweb/git-logo.png";
# The 'favicon'
$favicon = "/gitweb/git-favicon.png";
A ce stade la configuration de notre serveur est terminée. Accédons à gitweb en ligne en tapant
http://conf.alwaysdata.net/gitweb/
Figure 34 : Gitweb
4. Créer un dépôt nu
Cette étape consiste à exporter un dépôt existant dans un nouveau dépôt nu c’est-à-dire un dépôt
qui ne contient pas de copie de répertoire de travail. Essayons avec un petit exemple :
 Créons un dossier test en local
Figure 35 : Dossier test en local
 Accédons à ce dossier et lançons la commande git init
Figure 36 : Initialisation de git
 Créons une copie vide du dossier test
Cd ..
Pour revenir vers le dossier parent
Git clone --bare test test.git
Ou bien
Cp –Rf test/.git test.git
Figure 37 : Création du dépôt nu
5. Copier le dépôt nu sur le serveur
Avant de continuer, il faut rappeler que nos dépôts distant seront stockés dans le répertoire
/home/conf/git.
La copie du dossier nu sur le serveur est très simple, il suffit de lancer la commande
Scp –r repertoire.git user@serveur:chemin
Continuos avec notre exemple et tapons la commande
Scp –r test.git conf@ssh.alwaysdata.com:/home/conf/git
Figure 38 : Copie du dépôt nu sur le serveur
Nous pouvons maintenant accéder à gitweb pour voir la liste de nos dépôts.
Figure 39 : Liste des dépôts
À partir de maintenant, tous les autres utilisateurs disposant d'un accès SSH au serveur git peuvent
cloner votre dépôt en lançant la commande :
Git clone user@serveur:/chemin/repertoire.git
Utilisation de GUI
Finalement, nous devons rappeler que nous pouvons utiliser l’assistant graphique (GUI – Git User
Interface) pour la gestion de nos dépôts git.
Il suffit de vous déplacer dans le répertoire de votre projet git et de faire un clic droit et choisir par la
suite Git GUI Here
Figure 40 : Accéder à Git GUI
Vous tombez sur cette interface
Figure 41 : Git GUI
Conclusion
Tout au long de ce guide nous avons présenté les différents modèles de travail proposés par les
systèmes de gestion de version. Nous avons travaillé avec les lignes de commande git pour gérer nos
dépôts locales et distants. Par la suite nous avons expérimenté l’installation de git sur un serveur en
prenant comme exemple l’hébergeur alwaysdata.
A la fin de ce guide nous devons rappeler que ce document constitue un résumé des fonctionnalités
présenté sur la documentation de git.
Néographies
http://wiki.alwaysdata.com/wiki/Se_connecter_en_SSH
http://wiki.alwaysdata.com/wiki/Configurer_Gitweb
http://git-scm.com/book/fr

Contenu connexe

Tendances

受託開発とサービス開発を同じメンバーが担うことへの挑戦
受託開発とサービス開発を同じメンバーが担うことへの挑戦受託開発とサービス開発を同じメンバーが担うことへの挑戦
受託開発とサービス開発を同じメンバーが担うことへの挑戦
Yusuke Tamukai
 
Multimodal Question Answering in the Medical Domain (CMU/LTI 2020) | Dr. Asma...
Multimodal Question Answering in the Medical Domain (CMU/LTI 2020) | Dr. Asma...Multimodal Question Answering in the Medical Domain (CMU/LTI 2020) | Dr. Asma...
Multimodal Question Answering in the Medical Domain (CMU/LTI 2020) | Dr. Asma...
Asma Ben Abacha
 
SSD: Single Shot MultiBox Detector (UPC Reading Group)
SSD: Single Shot MultiBox Detector (UPC Reading Group)SSD: Single Shot MultiBox Detector (UPC Reading Group)
SSD: Single Shot MultiBox Detector (UPC Reading Group)
Universitat Politècnica de Catalunya
 
Computer Vision – From traditional approaches to deep neural networks
Computer Vision – From traditional approaches to deep neural networksComputer Vision – From traditional approaches to deep neural networks
Computer Vision – From traditional approaches to deep neural networks
inovex GmbH
 
Open-ended Visual Question-Answering
Open-ended  Visual Question-AnsweringOpen-ended  Visual Question-Answering
Open-ended Visual Question-Answering
Universitat Politècnica de Catalunya
 
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
CODE BLUE
 
capsule network
capsule networkcapsule network
capsule network
민기 정
 
Quality Attribute: Testability
Quality Attribute: TestabilityQuality Attribute: Testability
Quality Attribute: Testability
Pranay Singh
 
“How Transformers are Changing the Direction of Deep Learning Architectures,”...
“How Transformers are Changing the Direction of Deep Learning Architectures,”...“How Transformers are Changing the Direction of Deep Learning Architectures,”...
“How Transformers are Changing the Direction of Deep Learning Architectures,”...
Edge AI and Vision Alliance
 
Chapter 9 - convolutional networks
Chapter 9 - convolutional networksChapter 9 - convolutional networks
Chapter 9 - convolutional networks
KyeongUkJang
 
BIMO Forum 2015 - Etat de l'art de l'internet des objets : L'industrie 4.0
BIMO Forum 2015 - Etat de l'art de l'internet des objets : L'industrie 4.0BIMO Forum 2015 - Etat de l'art de l'internet des objets : L'industrie 4.0
BIMO Forum 2015 - Etat de l'art de l'internet des objets : L'industrie 4.0
Artionet Web Agency
 
Covid 19 diagnosis using x-ray images and deep learning
Covid 19 diagnosis using x-ray images and deep learningCovid 19 diagnosis using x-ray images and deep learning
Covid 19 diagnosis using x-ray images and deep learning
Shamik Tiwari
 
A normalized gaussian wasserstein distance for tiny object detection 1
A normalized gaussian wasserstein distance for tiny object detection 1A normalized gaussian wasserstein distance for tiny object detection 1
A normalized gaussian wasserstein distance for tiny object detection 1
taeseon ryu
 
End-to-end Optimization of Cameras and Image Processing - SIGGRAPH 2018
End-to-end Optimization of Cameras and Image Processing - SIGGRAPH 2018End-to-end Optimization of Cameras and Image Processing - SIGGRAPH 2018
End-to-end Optimization of Cameras and Image Processing - SIGGRAPH 2018
StanfordComputationalImaging
 
“Introduction to the TVM Open Source Deep Learning Compiler Stack,” a Present...
“Introduction to the TVM Open Source Deep Learning Compiler Stack,” a Present...“Introduction to the TVM Open Source Deep Learning Compiler Stack,” a Present...
“Introduction to the TVM Open Source Deep Learning Compiler Stack,” a Present...
Edge AI and Vision Alliance
 
Soft Systems Methodology for solving wicked problems
Soft Systems Methodology for solving wicked problemsSoft Systems Methodology for solving wicked problems
Soft Systems Methodology for solving wicked problems
col.lab | collaboration laboratory
 
Neural Architecture Search: Learning How to Learn
Neural Architecture Search: Learning How to LearnNeural Architecture Search: Learning How to Learn
Neural Architecture Search: Learning How to Learn
Kwanghee Choi
 
Yolo
YoloYolo
Lec14 multiview stereo
Lec14 multiview stereoLec14 multiview stereo
Lec14 multiview stereo
BaliThorat1
 
Object tracking presentation
Object tracking  presentationObject tracking  presentation
Object tracking presentation
MrsShwetaBanait1
 

Tendances (20)

受託開発とサービス開発を同じメンバーが担うことへの挑戦
受託開発とサービス開発を同じメンバーが担うことへの挑戦受託開発とサービス開発を同じメンバーが担うことへの挑戦
受託開発とサービス開発を同じメンバーが担うことへの挑戦
 
Multimodal Question Answering in the Medical Domain (CMU/LTI 2020) | Dr. Asma...
Multimodal Question Answering in the Medical Domain (CMU/LTI 2020) | Dr. Asma...Multimodal Question Answering in the Medical Domain (CMU/LTI 2020) | Dr. Asma...
Multimodal Question Answering in the Medical Domain (CMU/LTI 2020) | Dr. Asma...
 
SSD: Single Shot MultiBox Detector (UPC Reading Group)
SSD: Single Shot MultiBox Detector (UPC Reading Group)SSD: Single Shot MultiBox Detector (UPC Reading Group)
SSD: Single Shot MultiBox Detector (UPC Reading Group)
 
Computer Vision – From traditional approaches to deep neural networks
Computer Vision – From traditional approaches to deep neural networksComputer Vision – From traditional approaches to deep neural networks
Computer Vision – From traditional approaches to deep neural networks
 
Open-ended Visual Question-Answering
Open-ended  Visual Question-AnsweringOpen-ended  Visual Question-Answering
Open-ended Visual Question-Answering
 
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
 
capsule network
capsule networkcapsule network
capsule network
 
Quality Attribute: Testability
Quality Attribute: TestabilityQuality Attribute: Testability
Quality Attribute: Testability
 
“How Transformers are Changing the Direction of Deep Learning Architectures,”...
“How Transformers are Changing the Direction of Deep Learning Architectures,”...“How Transformers are Changing the Direction of Deep Learning Architectures,”...
“How Transformers are Changing the Direction of Deep Learning Architectures,”...
 
Chapter 9 - convolutional networks
Chapter 9 - convolutional networksChapter 9 - convolutional networks
Chapter 9 - convolutional networks
 
BIMO Forum 2015 - Etat de l'art de l'internet des objets : L'industrie 4.0
BIMO Forum 2015 - Etat de l'art de l'internet des objets : L'industrie 4.0BIMO Forum 2015 - Etat de l'art de l'internet des objets : L'industrie 4.0
BIMO Forum 2015 - Etat de l'art de l'internet des objets : L'industrie 4.0
 
Covid 19 diagnosis using x-ray images and deep learning
Covid 19 diagnosis using x-ray images and deep learningCovid 19 diagnosis using x-ray images and deep learning
Covid 19 diagnosis using x-ray images and deep learning
 
A normalized gaussian wasserstein distance for tiny object detection 1
A normalized gaussian wasserstein distance for tiny object detection 1A normalized gaussian wasserstein distance for tiny object detection 1
A normalized gaussian wasserstein distance for tiny object detection 1
 
End-to-end Optimization of Cameras and Image Processing - SIGGRAPH 2018
End-to-end Optimization of Cameras and Image Processing - SIGGRAPH 2018End-to-end Optimization of Cameras and Image Processing - SIGGRAPH 2018
End-to-end Optimization of Cameras and Image Processing - SIGGRAPH 2018
 
“Introduction to the TVM Open Source Deep Learning Compiler Stack,” a Present...
“Introduction to the TVM Open Source Deep Learning Compiler Stack,” a Present...“Introduction to the TVM Open Source Deep Learning Compiler Stack,” a Present...
“Introduction to the TVM Open Source Deep Learning Compiler Stack,” a Present...
 
Soft Systems Methodology for solving wicked problems
Soft Systems Methodology for solving wicked problemsSoft Systems Methodology for solving wicked problems
Soft Systems Methodology for solving wicked problems
 
Neural Architecture Search: Learning How to Learn
Neural Architecture Search: Learning How to LearnNeural Architecture Search: Learning How to Learn
Neural Architecture Search: Learning How to Learn
 
Yolo
YoloYolo
Yolo
 
Lec14 multiview stereo
Lec14 multiview stereoLec14 multiview stereo
Lec14 multiview stereo
 
Object tracking presentation
Object tracking  presentationObject tracking  presentation
Object tracking presentation
 

En vedette

Graph and RDF databases
Graph and RDF databasesGraph and RDF databases
Graph and RDF databases
Nassim Bahri
 
Conception et développement d&rsquo;une place de marché B2C
Conception et développement d&rsquo;une place de marché B2CConception et développement d&rsquo;une place de marché B2C
Conception et développement d&rsquo;une place de marché B2C
Nassim Bahri
 
RFID
RFIDRFID
Gidsy.com
Gidsy.comGidsy.com
Gidsy.com
Nassim Bahri
 
Héberger vos applications web grâce à openshift cloud
Héberger vos applications web grâce à openshift cloudHéberger vos applications web grâce à openshift cloud
Héberger vos applications web grâce à openshift cloud
Nassim Bahri
 
Implémentation d&rsquo;une solution E-CRM
Implémentation d&rsquo;une solution E-CRMImplémentation d&rsquo;une solution E-CRM
Implémentation d&rsquo;une solution E-CRM
Nassim Bahri
 
Célèbres pannes du génie logiciel
Célèbres pannes du génie logicielCélèbres pannes du génie logiciel
Célèbres pannes du génie logiciel
Nassim Bahri
 
Scrum (votre guide de poche)
Scrum (votre guide de poche)Scrum (votre guide de poche)
Scrum (votre guide de poche)
Nassim Bahri
 
DataWerhouse : Données de qualité
DataWerhouse : Données de qualitéDataWerhouse : Données de qualité
DataWerhouse : Données de qualité
Nassim Bahri
 
PFE :: Application de gestion des dus d'enseignement
PFE :: Application de gestion des dus d'enseignementPFE :: Application de gestion des dus d'enseignement
PFE :: Application de gestion des dus d'enseignement
Nassim Bahri
 
Prestashop le leader des cms
Prestashop le leader des cmsPrestashop le leader des cms
Prestashop le leader des cms
Nassim Bahri
 
Guide talend
Guide talendGuide talend
Guide talend
Nassim Bahri
 

En vedette (12)

Graph and RDF databases
Graph and RDF databasesGraph and RDF databases
Graph and RDF databases
 
Conception et développement d&rsquo;une place de marché B2C
Conception et développement d&rsquo;une place de marché B2CConception et développement d&rsquo;une place de marché B2C
Conception et développement d&rsquo;une place de marché B2C
 
RFID
RFIDRFID
RFID
 
Gidsy.com
Gidsy.comGidsy.com
Gidsy.com
 
Héberger vos applications web grâce à openshift cloud
Héberger vos applications web grâce à openshift cloudHéberger vos applications web grâce à openshift cloud
Héberger vos applications web grâce à openshift cloud
 
Implémentation d&rsquo;une solution E-CRM
Implémentation d&rsquo;une solution E-CRMImplémentation d&rsquo;une solution E-CRM
Implémentation d&rsquo;une solution E-CRM
 
Célèbres pannes du génie logiciel
Célèbres pannes du génie logicielCélèbres pannes du génie logiciel
Célèbres pannes du génie logiciel
 
Scrum (votre guide de poche)
Scrum (votre guide de poche)Scrum (votre guide de poche)
Scrum (votre guide de poche)
 
DataWerhouse : Données de qualité
DataWerhouse : Données de qualitéDataWerhouse : Données de qualité
DataWerhouse : Données de qualité
 
PFE :: Application de gestion des dus d'enseignement
PFE :: Application de gestion des dus d'enseignementPFE :: Application de gestion des dus d'enseignement
PFE :: Application de gestion des dus d'enseignement
 
Prestashop le leader des cms
Prestashop le leader des cmsPrestashop le leader des cms
Prestashop le leader des cms
 
Guide talend
Guide talendGuide talend
Guide talend
 

Similaire à Le système de versioning git

Initiation à Git, GitHub2.pdf
Initiation à Git, GitHub2.pdfInitiation à Git, GitHub2.pdf
Initiation à Git, GitHub2.pdf
mouad55
 
git.pdf
git.pdfgit.pdf
Versioning avec Git
Versioning avec GitVersioning avec Git
Versioning avec Git
Jean-Baptiste Vigneron
 
GIT training - basic for software projects
GIT training - basic for software projectsGIT training - basic for software projects
GIT training - basic for software projects
Thierry Gayet
 
3_SCM_Git.pdf
3_SCM_Git.pdf3_SCM_Git.pdf
3_SCM_Git.pdf
NourFrioui
 
Git utilisation quotidienne
Git   utilisation quotidienneGit   utilisation quotidienne
Git utilisation quotidienne
Sylvain Witmeyer
 
Travailler avec git et eclipse
Travailler avec git et eclipseTravailler avec git et eclipse
Travailler avec git et eclipse
Francois ANDRE
 
Présentation Git & GitHub
Présentation Git & GitHubPrésentation Git & GitHub
Présentation Git & GitHub
Thibault Vlacich
 
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
SimpleLearn1
 
Débuter avec Git & github
Débuter avec Git & githubDébuter avec Git & github
Débuter avec Git & github
Monoem Youneb
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
Nicolas wallerand
 
Git
GitGit
Les bases de git
Les bases de gitLes bases de git
Les bases de git
Pierre Sudron
 
Git pour les (pas si) nuls
Git pour les (pas si) nulsGit pour les (pas si) nuls
Git pour les (pas si) nuls
Malk Zameth
 
Introduction à git.pdf
Introduction à git.pdfIntroduction à git.pdf
Introduction à git.pdf
badrfathallah2
 
Cours sur github part3 git
Cours sur github part3 gitCours sur github part3 git
Cours sur github part3 gitPape Diop
 
Devops - Git - VSTS
Devops - Git - VSTSDevops - Git - VSTS
Devops - Git - VSTS
Michel Bruchet
 
VSTS Git
VSTS GitVSTS Git
VSTS Git
Michel Bruchet
 
envol08-sgv envol08-sgv envol08-sgv envol08-sgv
envol08-sgv envol08-sgv envol08-sgv envol08-sgvenvol08-sgv envol08-sgv envol08-sgv envol08-sgv
envol08-sgv envol08-sgv envol08-sgv envol08-sgv
mia884611
 

Similaire à Le système de versioning git (20)

Initiation à Git, GitHub2.pdf
Initiation à Git, GitHub2.pdfInitiation à Git, GitHub2.pdf
Initiation à Git, GitHub2.pdf
 
git.pdf
git.pdfgit.pdf
git.pdf
 
Versioning avec Git
Versioning avec GitVersioning avec Git
Versioning avec Git
 
GIT training - basic for software projects
GIT training - basic for software projectsGIT training - basic for software projects
GIT training - basic for software projects
 
3_SCM_Git.pdf
3_SCM_Git.pdf3_SCM_Git.pdf
3_SCM_Git.pdf
 
Git utilisation quotidienne
Git   utilisation quotidienneGit   utilisation quotidienne
Git utilisation quotidienne
 
Travailler avec git et eclipse
Travailler avec git et eclipseTravailler avec git et eclipse
Travailler avec git et eclipse
 
Présentation Git & GitHub
Présentation Git & GitHubPrésentation Git & GitHub
Présentation Git & GitHub
 
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
 
Débuter avec Git & github
Débuter avec Git & githubDébuter avec Git & github
Débuter avec Git & github
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
 
Git
GitGit
Git
 
Les bases de git
Les bases de gitLes bases de git
Les bases de git
 
Git pour les (pas si) nuls
Git pour les (pas si) nulsGit pour les (pas si) nuls
Git pour les (pas si) nuls
 
Introduction à git.pdf
Introduction à git.pdfIntroduction à git.pdf
Introduction à git.pdf
 
Get startedwithgit2
Get startedwithgit2Get startedwithgit2
Get startedwithgit2
 
Cours sur github part3 git
Cours sur github part3 gitCours sur github part3 git
Cours sur github part3 git
 
Devops - Git - VSTS
Devops - Git - VSTSDevops - Git - VSTS
Devops - Git - VSTS
 
VSTS Git
VSTS GitVSTS Git
VSTS Git
 
envol08-sgv envol08-sgv envol08-sgv envol08-sgv
envol08-sgv envol08-sgv envol08-sgv envol08-sgvenvol08-sgv envol08-sgv envol08-sgv envol08-sgv
envol08-sgv envol08-sgv envol08-sgv envol08-sgv
 

Dernier

OCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO TALKS : 4 Tech Trends du Software Engineering.pdfOCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO Technology
 
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
OCTO Technology
 
Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
UNITECBordeaux
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Laurent Speyser
 
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
Université de Franche-Comté
 
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
OCTO Technology
 

Dernier (6)

OCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO TALKS : 4 Tech Trends du Software Engineering.pdfOCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO TALKS : 4 Tech Trends du Software Engineering.pdf
 
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
 
Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
 
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
 
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
 

Le système de versioning git

  • 1. Préface Ce manuel constitue un simple guide pour débuter avec le système de gestion de version git. Ce guide n’est pas une référence complète que vous utilisez en cas de besoin. Ce document vous guidera dans votre apprentissage et vous donnera les premiers pas pour commencer avec les systèmes de gestion de version. La documentation complète du système git est disponible en anglais (http://git-scm.com/book/) et en français (http://git-scm.com/book/fr). Vous pouvez aussi essayer git en ligne en suivant le lien http://try.github.com/ -Nassim BAHRI-
  • 2. Le système de versioning git Introduction Lorsque vous travailler sur un projet en équipe, le problème majeur rencontré consiste en la modification d’un fichier par plusieurs utilisateurs ainsi que la gestion des conflits. Dans ce cas un système de versioning sera un outil indispensable. Le système de gestion de version est un logiciel qui enregistre l’évolution d’un ou plusieurs fichiers au cours du temps, en gardant la trace de toutes les modifications effectuées, de manière à ce qu’on puisse rappeler une version antérieure d’un fichier à tout moment. Parmi les fonctionnalités basiques d’un tel système, nous pouvons citer :  Conserver un historique de toutes les modifications,  Possibilité de travailler à plusieurs (grâce aux fonctions de verrous et de gestion des conflits),  Permettre la modification parallèle des fichiers (le système de branches). Différents modèles Brièvement, les systèmes de gestion de version proposent trois modèles de travail que vous pouvez choisir l’un d’entre eux selon vos besoins.Nous commençons à détaillé ces différents modèles. 1. Le modèle local C’et laméthode la plus courante et quise matérialise dans la copie des fichiers de travail dans un autre répertoire sur le même ordinateur. Cette méthode est la plus simple et adapté lorsqu’un seul utilisateur travaille sur le projet. Ce modèle peut être résumé par laFigure 1. Figure 1 : Les systèmes de gestion de version locaux
  • 3. 2. Le modèle centralisé Lorsque vous travailler en groupe, vous allez vous retrouver avec un problème courent; les développeurs ont besoin de collaborer sur des stations différentes. Il est donc impossible d’utiliser le modèle local. La solution sera donc de centraliser les fichiers sur un ordinateur qui sera accessible par tous les membres de l’équipe. Et c’est ça le principe d’un tel modèle qui met en place un serveur central contenant tous les fichiers sous gestion de version, et des clients qui peuvent extraire les fichiers de ce dépôt. Ce modèle peut être résumé par la Figure 2. Figure 2 : Les systèmes de gestion de version centralisés Cependant, ce modèle présente un risque majeur que la panne du serveur centralisé présente. En effet, si le serveur tombe en panne tous les collaborateurs seront bloqués et ne peuvent pas enregistrer les modifications issues de leurs travails. Ils risquent aussi de tous perdre si le disque dur du serveur se corrompt. 3. Le modèle distribué Suite aux problèmes que présente le modèle centralisé, les systèmes de gestion de version distribués entent en jeu. L’apport de ce nouveau modèle est que les clients n’extraient pas seulement la dernière version du fichier mais ils dupliquent tous le dépôt, c'est-à-dire stocker toutes les versions du fichier dans un dépôt local (présenté dans le paragraphe 1). Ainsi si le serveur tombe en panne, il peut être restauré en se serviront du dépôt d’un des clients. La Figure 3 résume ce dernier modèle. Choix du système de versioning Sur le marché, plusieurs logiciels permettent la gestion de version. Nous présentons dans le Tableau 1 quelques logiciels libres. Gestion locale GNU RCS (1982) Gestion centralisée CVS (1990), CVSNT(1992), SVN(2000)
  • 4. Gestion distribuée SVK(2003), Git(2005), Fossil(2007) Tableau 1 : Exemples des logiciels de gestion de version D’après la comparaison entre les différents modèles de gestion de version que nous avons faite dans les paragraphes précédents, nous pouvons relever que les systèmes de gestion distribuée semblent être les meilleurs. Parmi les logiciels de gestion distribués, « git » est le mieux adaptés vu les caractéristiques qu’il présente :  Vitesse,  Conception simple,  Support pour le développement non linéaire (possibilité de travailler à plusieurs),  Complétement distribué,  Disponible sur plusieurs plateformes (Windows, Linux, Mac os),  Plusieurs clients existants (GitHub, Gitbox, sourceTree,...). Figure 3 : Les systèmes de gestion de version distribués Bien démarrer avec git : Installation Avant de commencer à utiliser n’importe quel logiciel, il faut dans un premier temps l’installer. Nous verrons dans cette section comment installer le système de gestion de version git sous Windows. Pour les autres plateformes notamment Linux et Mac os vous pouvez suivre les instructions décrite dans le lien suivanthttp://git-scm.com/book/fr/D%C3%A9marrage-rapide-Installation-de-Git. Pour installer git, rien de complexe. Rendez-vous sur la page de téléchargement via ce lien http://git- scm.com/downloads et télécharger la version adéquate avec votre système d’exploitation.
  • 5. Figure 4 : Télécharger git Une fois le téléchargement est terminé, lancez le fichier exécutable. Figure 5 : Lancement de l'installation Figure 6 : Licence GPL et conditions d’utilisation Figure 7 : Chemin d'installation Choisissez par la suite l’emplacement d’installation de git sur votre ordinateur.
  • 6. Une fois vous avez mentionné l’emplacement de l’installation, il vous est demandé de choisir les composants à installer avec git. Vous devez donc cocher les deux cases Git Bach Here et Git GUI Here. Figure 8 : Choisir les composants à installer Choisissez le dossier où vous voulez créer les raccourcis et ajouter par la suite git au PATH de votre ordinateur. Figure 9 : dossier contenant les raccourcis Figure 10 : Ajouter git au PATH
  • 7. Figure 11 : Choisissez le mode de traitement Figure 12 : git en cours d'installation Figure 13 : Installation terminée Passons maintenant aux choses sérieuses : la configuration et l’installation de git. Par défaut git nous propose deux modes d’utilisation ;un mode graphique et un mode en utilisant les lignes de commande. Nous intéresserons dans les sections suivantes à l’utilisation de git avec les lignes de commande puisqu’il est plus complexe que le mode graphique. Il est à noter que nous pouvons utiliser plusieurs client git qui nous permet la simplification de quelque tâches. Parmi les clients gratuits :  GitHub (http://windows.github.com/) / (http://mac.github.com/)  Git Extension (https://code.google.com/p/gitextensions/)  SourceTree (http://www.sourcetreeapp.com/)  GitEye (http://www.collab.net/giteyeapp)
  • 8. Bien démarrer avec git : Configuration Lors de la première utilisation du gestionnaire de version git vous devez configurer certains paramètres notamment le nom de l’utilisateur et l’adresse email qui seront utiles pour identifier les utilisateurs qui ont validés des modifications par la suite.  Modifier le nom de l’utilisateur Git config --global user.name ‘nom utilisateur’  Modifier l’adresse email Git config --global user.email ‘email@exemple.com’  Afficher la liste des informations de configuration Git config --list  Obtenir l’aide Git help [commande] Bien démarrer avec git : Les bases de git Dans cette section nous illustrons les différents fonctionnalités de git avec un exemple réel.  Créer un projet git Dans un premier lieu, vous commencer à créer votre projet. Lancer ‘Git bash’ que vous avez installé avec git et positionner vous dans le répertoire de votre projet. Cd /c/wamp/www/monProjet Supposons que nous sommes en train de développer une application web, donc notre projet sera sous le répertoire www de notre serveur. Dans une seconde étape il faut initialiser git Git init Cette commande crée les fichiers contenant les informations nécessaires pour le contrôle du projet.  Vérifier l’état des fichiers On suppose que nous ayons créé le fichier index.php qui affiche le fameux message ‘Hello World’ et nous voulons vérifier l’état des fichiers de notre projet, il suffit de taper la commande Git status Il faut savoir que le cycle de vie des états d’un fichier est le suivant :
  • 9.  Untracked : le fichier n’est pas sous le contrôle du gestionnaire de version,  Unmodified : le fichier n’est pas modifié,  Modified : le fichier a été modifié,  Staged : mis en scène, en attente de validation (commit). Le résultat de notre commande Figure 14 : Résultat de la commande git init Nous pouvons constater que le fichier index.php est dans un état untracked. Pour ajouter ce fichier sous le contrôle de git, nous devons tapez la commande Git add index.php Git status Figure 15 : Résultat de la commande git status Nous pouvons constater que notre fichier a passé vers un état staged.
  • 10.  Valider les modifications A ce stade nous pouvons valider nos modifications Git commit –m ‘un message’ Nous pouvons aussi consulter la liste de nos commit en tapant la commande Git log [-p] [-2] -p : permet d’afficher la différence entre chaque validation -2 : le nombre maximal à afficher  Différence entre les fichiers Des fois, nous avons besoins de voir la différence entre les fichiers avant de valider les modifications. La commande qui nous servi pour cette opération est : Git diff Nous pouvons aussi voir la différence du dernier commit Git diff HEAD Ou bien voir les modifications mises en scène (en attende d’un commit) Git diff --staged  Eliminer la phase d’indexation avant le commit Avant de valider les modifications, il faut ajouter les fichiers modifiés dans la zone d’index en utilisant la commande Git add nom_fichier Nous pouvons donc éliminer cette étape en passant directement par la commande suivante Git commit –a –m ‘mon message’ En effet, si nous avons des nouveaux fichiers il faut impérativement passer par la commande Git add nom_fichier  Suppression /déplacement d’un fichier Parfois nous avons besoin de supprimer ou de déplacer un fichier vers un autre répertoire. Dans ce cas il faut indiquer à git que vous avez fait une modification dans la structure de votre projet. Les commande qui nous servi dans ce cas sont : Git rm nom_fichier (pour la suppression d’un fichier)
  • 11. Git mv fichier_origine cible (pour le déplacement d’un fichier)  Modifier le dernier commit Supposons que lors de notre dernière validation nous avons oublié de mettre un fichier sous contrôle de version, donc il ne sera pas pris en compte lors de ce commit. Au lieu de créer un autre commit, nous pouvons modifier le dernier commit en ajoutant ce fichier. La commande qui permet de modifier une commit est la suivante : Git commit –amend Exemple : Touch liste.php Git commit –m ‘mon dernier commit’ # Dans ce cas le fichier liste.php n’est pas pris en compte Git add liste.php Git commit --amend La dernière ligne permet de modifier le commit en ajoutant le fichier liste.php  Désindexer un fichier Parfois nous avons besoin de garder un ou plusieurs fichiers en privé Figure 16 : Arborescente du projet Nous avons créé les deux répertoires css et images ainsi que les fichiers script.js et private.txt. Nous voulons mettre tous les fichiers de ce projet sous contrôle de version sauf le fichier private.php. Nous pouvons donc faire : Git add * Git reset HEAD private.php  Réinitialiser un fichier Le but de l’utilisation d’un gestionnaire de version est de récupérer une version antérieure d’un fichier modifié. La commande qui nous permet d’effectuer cette opération est : Git checkout --nom_fichier
  • 12.  Afficher les étiquettes (tags) L’étiquetage est une technique utilisé pour marquer un état de publication. Par exemple marquer le dernier commit comme étant la version 1.0 de ce projet. Nous pouvons afficher la liste des tags en se serviront de la commande : Git tag  Créer une étiquette Pour la création d’une étiquette rien de complexe : Git tag –a 1.0 –m ‘un message’ 1.0 : c’est le nom de l’étiquette Figure 17 : Créer une étiquette  Afficher les informations d’une étiquette Pour afficher les informations d’une étiquette, la commande est : Git show nom_etiquette Figure 18 : Afficher les étiquettes
  • 13.  Créer une branche Les branches est l’un des éléments les plus importants lors de l’utilisation d’un gestionnaire de version. Pour être simple, nous pouvons définir une branche comme un espace de travail séparé et indépendant. Donc nous pouvons créer des branches pour chaque membre de l’équipe si on travaille en groupe ou bien une branche pour le développement et une autre pour la production… La commande qui permet la création d’une branche est : Git branch nom_branche  Basculer vers une autre branche Pour passer d’une branche à une autre nous pouvons utiliser la commande Git checkout nom_branche Our bien la commande Git checkout –b nom_branche Cette commande permet de créer une branche et basculer automatiquement vers cette dernière.  Fusionner deux branches Une fois nous avons terminé notre travail et nous voulons fusionner nos deux branches, nous utilisons la commande : Git merge nom_branche Dans ce cas le contenu de la branche nom_branche sera fusionné avec le contenu de la branche actuelle (dans ce cas master). Exemple d’utilisation : Nous allons créer dans un premier lieu la branche « dev » qui sera consacré pour notre travail de développement Git branch dev Par la suite nous basculons vers cette branche Git checkout dev Figure 19 : Basculer vers la branche dev
  • 14. Créons maintenant le fichier produit.php Touch produit.php Git add produit.php Figure 20 : Créer le fichier produit.php Maintenant, il nous reste qu’à valider les modifications Git commit –m ‘commit avec le fichier produit.php’ Figure 21 : Valider les modifications Pour afficher les différentes branches, on utilise la commande Git branch Figure 22 : Lister les branches La branche avec un Astérix est celle en cours. Nous revenons maintenant vers la branche master Git checkout master
  • 15. Figure 23 : Retour vers la branche master Affichons le journal de modification Git log Figure 24 : Afficher le journal de modification Nous pouvons constater que le dernier commit de la branche « dev » n’est pas pris en compte dans cette branche et si on affiche la liste des fichiers de ce projet avec la commande « ls » nous pouvons voir que le fichier produit.php n’a pas été ajouter. Ls Figure 25 : Lister le contenu du répertoire de travail Maintenant nous pouvons fusionner le contenu des deux branches « dev » et « master » dans « master » Git merge dev
  • 16. Figure 26 : Fusion des branches Faisons un Git log Figure 27 : Afficher l'historique des modifications  Supprimer une branche Pour la suppression d’une branche, la commande est : Git branche –d nom_branche Il est à noter que si une branche contient des modifications validées et qui n’ont pas été fusionné avec d’autres branches, il est impossible de supprimer cette dernière. Nous aurons le message : Figure 28 : Supprimer une branche
  • 17.  Afficher les dernières validations de chaque branche Pour afficher le dernier commit de chaque branche, nous utilisons la commande Git branch –v  Les branches fusionnées Pour afficher les branches fusionnées avec celle en cours, nous utilisons Git branche --merge Dans le cas contraire, nous utilisons Git branch --no-merge Notions avancées : travailler sur un dépôt distant Dans la première partie de ce document, nous avons invoqué le besoin des développeurs à collaborer sur des stations différentes. Et nous avons présenté le modèle répondant à ce type de problème. Tout au long de cette partie nous supposons que notre serveur est configuré pour la prise en compte du système git. Nous verrons dans la prochaine partie l’installation et la configuration de git sur un serveur.  Afficher les serveurs distants Lorsque nous travaillons avec des dépôts distants, nous avons toujours un ensemble de serveur (url des serveurs) enregistrés pour notre répertoire de travail. La commande qui nous permet d’afficher la liste des serveurs enregistrés est : Git remote Cette commande permet d’afficher le nom court su serveur (en d’autre terme un alias du serveur) Pour afficher les informations complètes sur le serveur notamment son nom et son url nous utilisons Git remote –v  Cloner un dépôt distant La commande qui nous permet de cloner un dépôt distant sur notre machine est la suivante Git clone url_serveur/nom_repertoire.git Cette commande permet d’ajouter un nouveau serveur à notre projet avec l’adresse url_serveur et l’alias origin.
  • 18.  Ajouter un nouveau dépôt distant La première étape à faire lorsque nous souhaitons travailler avec un dépôt distant consiste à ajouter l’adresse de ce dernier à notre projet. Bien sûr cette étape est négligée si nous avons fait un clone. Git remote add alias URL Exemple: Git add origin https://github.com/NassimBahri/Filgrane.git  Récupérer depuis des dépôts distants Pour obtenir les données des dépôts distants, il suffit de lancer la commande Git fetch alias Exemple : Git fetch origin Cette commande s'adresse au dépôt distant et récupère toutes les données de ce projet que vous ne possédez pas déjà.  Pousser le travail vers un dépôt distant Une fois vous êtes satisfait avec votre copie locale, il est temps de la pousser vers le dépôt distant afin de la partager avec les autres membres de l’équipe. La commande qui nous permet de pousser notre travail est la suivante : Git push alias branche Nous pouvons aussi lancer cette commande en ajoutant un autre paramètre Git push –u alias branche -u permet de se souvenir de l’alias du serveur ainsi que la branche. La prochaine fois que nous voulons pousser notre travail, il suffit de taper Git push  Inspecter un dépôt distant La commande permettant d’afficher les informations sur un dépôt distant est Git remote show alias  Renommer / supprimer un dépôt distant Pour changer l’alias d’un dépôt distant rien de complexe, il suffit de lancer la commande Git remote rename old_alias new_alias
  • 19. De même pour la suppression d’un dépôt distant Git remote rm alias  Fusionner le travail Pour fusionner le contenu de la branche distante avec la mienne, nous lançons la commande Git pull alias branche_distante Exemple Git pull origin master Cette commande permet de fusionner le contenu de la branche distante master avec le contenu de la branche actuelle du dépôt local. Notions avancés : Installation de git sur un serveur L’installation de git sur un serveur se diffère d’un hébergeur à un autre. Nous verrons dans cette partie comment installer git sur les serveurs d’un hébergeur Français ; alwaysdata (https://www.alwaysdata.com/). 1. Créer un compte et activer le ssh Accédons à la page d’inscription et créons notre compte d’hébergement. Une fois notre compte a bien été créé, nous accédons à notre espace d’administration via cette url :https://admin.alwaysdata.com/. Figure 29 : Formulaire de connexion Introduisons notre adresse email et notre mot de passe pour accéder à notre panel d’administration. Par la suite, nous devons activer notre compte ssh.
  • 20. Figure 30 : Menu d'administration Figure 31 : Liste des comptes ssh Figure 32 : Activer le compte ssh Maintenant il est temps de configurer notre serveur pour la prise en compte du système de versioning git. 2. Se connecter à notre compte Dans un premier lieu connectons-nous à notre serveur en mode ssh. Ouvrons alors ‘git bash’ et tapons la commande suivante Ssh conf@ssh.alwaysdata.com Expliquons cette commande : ssh : indique le mode de connexion
  • 21. Conf : le login de notre compte d’hébergement ssh.alwaysdata.com : l’adresse de notre serveur Figure 33 : Connexion en mode ssh L’arborescence de notre répertoire est la suivante : 3. Configuration de gitweb La seconde étape de notre processus consiste à configurer gitweb. Tout au long de notre travail nous considérons que nos dépôts git serons stockés dans le répertoire /home/conf/git Dans le dossier /home/conf/cgi-bin créons un lien sur le CGI de gitweb à l’aide de la commande : /home www cgi-bin admin user (conf) /home www cgi-bin admin git user (conf)
  • 22. Cd cgi-bin ln -s /usr/lib/cgi-bin/gitweb.cgi Créons ensuite le dossier contenant les fichiers nécessaire pout gitweb cd ../www mkdir gitweb mkdir ../git cd gitweb cp /usr/share/gitweb/*. Créons par la suite le fichier ‘.htaccess’ dans le dossier /home/conf/www, contenant ceci DirectoryIndex /cgi-bin/gitweb.cgi RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME}!-d RewriteRule ^.* /cgi-bin/gitweb.cgi/$0 [L,PT] Passons maintenant à la dernière étape, la configuration de gitweb. Dans le dossier /home/conf/cgi- bin, créons un fichier ‘gitweb_config.perl’ contenant le code suivant : # Path to git projects (<project>.git) #le chemin que nous avons choisi pour nos dépôts git $projectroot = "/home/conf/git"; # Directory to use for temp files $git_temp = "/tmp"; # Target of the home link on top of all pages #$home_link = $my_uri || "/"; # Html text to include at home page $home_text = "indextext.html"; # file with project list; by default, simply scan the projectroot dir. $projects_list = $projectroot;
  • 23. # Stylesheet to use $stylesheet = "/gitweb/gitweb.css"; # Logo to use $logo = "/gitweb/git-logo.png"; # The 'favicon' $favicon = "/gitweb/git-favicon.png"; A ce stade la configuration de notre serveur est terminée. Accédons à gitweb en ligne en tapant http://conf.alwaysdata.net/gitweb/ Figure 34 : Gitweb 4. Créer un dépôt nu Cette étape consiste à exporter un dépôt existant dans un nouveau dépôt nu c’est-à-dire un dépôt qui ne contient pas de copie de répertoire de travail. Essayons avec un petit exemple :  Créons un dossier test en local Figure 35 : Dossier test en local  Accédons à ce dossier et lançons la commande git init
  • 24. Figure 36 : Initialisation de git  Créons une copie vide du dossier test Cd .. Pour revenir vers le dossier parent Git clone --bare test test.git Ou bien Cp –Rf test/.git test.git Figure 37 : Création du dépôt nu 5. Copier le dépôt nu sur le serveur Avant de continuer, il faut rappeler que nos dépôts distant seront stockés dans le répertoire /home/conf/git. La copie du dossier nu sur le serveur est très simple, il suffit de lancer la commande Scp –r repertoire.git user@serveur:chemin
  • 25. Continuos avec notre exemple et tapons la commande Scp –r test.git conf@ssh.alwaysdata.com:/home/conf/git Figure 38 : Copie du dépôt nu sur le serveur Nous pouvons maintenant accéder à gitweb pour voir la liste de nos dépôts. Figure 39 : Liste des dépôts À partir de maintenant, tous les autres utilisateurs disposant d'un accès SSH au serveur git peuvent cloner votre dépôt en lançant la commande : Git clone user@serveur:/chemin/repertoire.git Utilisation de GUI Finalement, nous devons rappeler que nous pouvons utiliser l’assistant graphique (GUI – Git User Interface) pour la gestion de nos dépôts git.
  • 26. Il suffit de vous déplacer dans le répertoire de votre projet git et de faire un clic droit et choisir par la suite Git GUI Here Figure 40 : Accéder à Git GUI Vous tombez sur cette interface Figure 41 : Git GUI Conclusion Tout au long de ce guide nous avons présenté les différents modèles de travail proposés par les systèmes de gestion de version. Nous avons travaillé avec les lignes de commande git pour gérer nos dépôts locales et distants. Par la suite nous avons expérimenté l’installation de git sur un serveur en prenant comme exemple l’hébergeur alwaysdata. A la fin de ce guide nous devons rappeler que ce document constitue un résumé des fonctionnalités présenté sur la documentation de git.