You are on page 1of 39

Gestion du versionning

de code avec Git


INTRODUCTION À LA GESTION DE VERSIONS AVEC GIT
25/04/2022
1.Introduction aux SCM
Introduction aux SCM
Définition
o Système permettant le suivi (dans le temps) des différentes modifications
apportées à un ensemble de fichiers observés.
o Précision : indifférent au langage utilisé et ne se limite pas au code (fichiers de
configuration, sources LaTeX, langage de programmation etc.).

o Plusieurs acronymes :
o SCM : Source Code Management
o VCS : Version Control System
o RCS : Revision Control System
Introduction aux SCM
Pourquoi les SCM
o Maîtriser le code produit durant un développement logiciel
implique de savoir ce qui à été fait :
oPar l’ensemble des développeurs (Qui ?)
oDans le temps (Quand ?)
oPour quel motif/fonctionnalité (Pourquoi ?)
oImpliquant de nombreuses fonctions, dans de nombreux fichiers (Où ?
Comment ?)
→Leur utilité ne se limite pas au travail à plusieurs.
Introduction aux SCM
Pourquoi les SCM
Utilité :
oPermettre la traçabilité d’un développement (historique des changements)
oFaciliter la collaboration, éviter les conflits ou aider à la leur résolution
oGarder une version du code source toujours fonctionnelle, tout en travaillant
sur plusieurs fonctionnalités (notion de branche)
oPermettre des schémas organisationnels structurant les développements
(workflows)
Introduction aux SCM
Historique
Principaux SCM :
oCVS (1990) : centralis ́e, travaille sur des fichiers, limité
oSVN (2000) : centralisé, travaille sur des fichiers, workflows limités
oGit (2005) : décentralisé, travaille sur des arborescences de contenus
o... et beaucoup d’autres, libres (Bitbucket, Bazaar) ou propriétaires (Microsoft,
HP, IBM)
→Quelque soit le SCM utilisé, il est important d’en utiliser un et de maîtriser les
opérations de base.
Introduction aux SCM
GIT
Introduction aux SCM
GIT
oChaque année des groupes de projet, des stagiaires, etc. tentent de se passer
de SCM...

oPartage du code par divers moyens archaïques et dangereux :clé USB, email,
Google Drive, Instant Messaging, etc.

oSauvegarde aléatoire, pas de traçabilité, N versions en parallèle difficiles à


regrouper, etc.
Introduction aux SCM
Un peu de vocabulaire
oRepository ou dépôt : répertoire versionné (peut être local ou distant)
oCommit : Enregistrement des dernières modifications dans le dépôt
oVersion ou revision : état du code source arrêté par un commit
oBranche : version alternative du code source liée à une tentative de
développement spécifique
oHead : pointeur sur la version du code chargée (en général le dernier commit)
oTrunk ou tronc ou master : branche principale du code source
oMerge : tentative d’unification de deux branches
oConflit : problème de merge nécessitant une prise de décision
Introduction aux SCM
Pourquoi Git ?
oCréé par Linus Torwarld pour gérer les sources du noyau Linux

oTrès souple et puissant mais complexe et peu intuitif → apprentissage ardu

oSCM le plus utilisé actuellement, libre (GPL), communauté très active

oDevient un standard (l’est déjà dans le monde du libre)


Introduction aux SCM
Gestionnaire de version centralisé
Introduction aux SCM
Gestionnaire de version décentralisé
2. Git
Git
Zones de stockage dans le git
Découpage interne en trois zones
o Le répertoire de travail (working directory) local où sont réalisés les changements
o La ”staging area” (aussi appelé index) où sont pré-enregistrés les changements (en attente de
commit)
o Le dépôt git où sont enregistrés les changements
Git
Zones de stockage dans le git
Découpage interne en trois zones
ole répertoire de travail est un bac à sable

ol'Index (staging area) est un instantané proposé de la prochaine validation

oHEAD est l'instantané de la dernière validation (commit), et sera le prochain parent


Git
Staging area
o Sert a préparer les commits progressivement
o git commit enregistre les modifications indexées
o La staging area peut être bypassée : git commit -a
Git
Organisation des informations
oStockage par snapshots :
o Git stocke tout le contenu du répertoire versionné à chaque commit (mais
utilise une compression intelligente basée sur la version antérieure la plus
proche)
o Permet une grande souplesse
Git
Organisation des informations
Emplacement du dépôt local:
oLes données propres à git sont stockées dans un unique répertoire .git à la racine du
projet. C'est le dépôt local.
Références
L'historique du projet est un graphe de commit. Certaines références sur ce graphe sont
utiles :
o master : reference la branche principale
o HEAD : par défaut, référence le commit le plus récent de la
o branche courante (sera le parent du prochain commit)
o HEAD-2 : deux commits avant la HEAD
Git
Organisation des informations
oStockage par snapshots :
o Git stocke tout le contenu du répertoire versionné à chaque
commit (mais utilise une compression intelligente basée sur la
version antérieure la plus proche)
o Permet une grande souplesse
Git
Structure d’un commit
Git
Installation
o Git est déjà installer par défaut sur les systèmes linux et mac.
o Pour les machines windows :
o Téléchargez et installez git bash :
ohttps://gitforwindows.org/
Git
Configuration et aide
Git
Configuration et aide
Git
Propagation et récupération
Un dépôt distant est toujours accessible et permet de partager les commits entre développeurs (ex :
GitHub).
oSi besoin, lier un dépôt local avec un dépôt distant :
 git remote add nom_serveur adresse_dépôt
oEnvoyer les derniers enregistrements vers le dépôt distant :
 git push (nom serveur nom branche locale :nom branche distante)
Récupérer et intégrer les derniers enregistrements :
 git pull (nom_serveur nom_branche_distante)
Le nom par défaut d'un serveur est origin.
oRécupérer les derniers enregistrements sans les intégrer :
 git fetch nom_serveur nom_branche_distante
Git
Manipulation de fichiers
Git
Consultation des méta-données
o Git status :
o Consulter les modifications du working dir depuis le dernier commit.
o Permet aussi de faire point sur les fichiers en staging
o Hésitez vraiment pas a abuser de cette commande
Git
Consultation des méta-données
o Git diff :
o Consulter les modifications en cours du contenu des fichiers suivis
o Permet de savoir les parties que l’on n’as modifié depuis le précédant commit

o Git diff numero_commit1 numero_commit2:


o Consulter les modifications du contenu des fichiers entre deux commits
Git
Consultation des méta-données
o Git log :
o Consulter l’historique des commits

o Git reflog
o Consulter l’historique des manipulation du graphe
Git
Consultation des méta-données
o Git blame nom_fichier :
o Consulter qui a modifié quelles lignes d’un fichier :

o Git reflog
o Consulter l’historique des manipulation du graphe
Git
Annuler des modifications
Git
Annuler des modifications
Git
Gestion des branches
Les branches permettent de réaliser un développement en parallèle de la branche principale
afin de limiter les impacts.
Lister les branches existantes : git branch
Créer une nouvelle branche : git checkout -b nom _branche (nom_racine ou SHA1 )
Changer la branche active : git checkout nombranche (revient à déplacer la référence HEAD
vers le commit le plus récent de cette branche)

Revenir sur la branche principale : git checkout master


Git
Gestion des branches
Git
Gestion des branches
Git
Gestion des branches
Git
Bonnes pratiques
3. Outils graphiques
Outils graphiques
Les puristes git vous dirons : « Git s’utilise en ligne de commande seulement » mais il faut bien
avoué qu’il existe des outils graphique faisant tout aussi bien le travail.
Outils en ligne

You might also like