Université Dakar Bourguiba EC : DevOps
UFR des Sciences et techniques Master 2
Département Génie Informatique
RAPPORT DE TRAVAIL
TP : Le versioning avec Git et GitHub
Fait par: Présenté à :
Fatou Ndiaye M. Lo
Sommaire :
Introduction
I. Objectif du TP
II. Notions élaborées
II.1. Définition du versioning
II.2. Présentation de Git
II.3. Présentation de GitHub
II.4. Différence entre Git et GitHub
III. Travail réalisé
Conclusion
Introduction
Le développement logiciel moderne nécessite des outils permettant la collaboration, le suivi des
modifications et la gestion des différentes versions d’un projet. C’est dans ce contexte que la
gestion de versions (ou versioning) prend tout son sens.
Ce TP vise à mettre en pratique les concepts fondamentaux du versioning à l’aide de Git et GitHub,
des outils devenus indispensables dans le monde professionnel du développement informatique.
I. Objectif du TP
Ce TP a pour objectif de familiariser les étudiants avec les notions de base du versioning,
notamment à travers l’utilisation de Git en ligne de commande et de GitHub comme
plateforme de collaboration.
Les objectifs spécifiques sont :
Comprendre l’intérêt de la gestion de versions.
Manipuler les commandes fondamentales de Git.
Synchroniser un projet local avec un dépôt distant sur GitHub.
Savoir collaborer à distance via un outil de versioning.
II. Notions élaborées
II.1. Définition du versioning
Le versioning (ou gestion de versions) est un processus qui permet de suivre et de gérer les
modifications apportées à des fichiers, généralement du code source. Il permet :
De travailler à plusieurs sur le même projet sans conflit,
De comprendre l’historique d’un fichier ou d’un projet,
De travailler à plusieurs sur le même projet sans conflit.
II.2. Présentation de Git
Git est un système de gestion de versions décentralisé (DVCS – Distributed Version
Control System), conçu pour permettre aux développeurs de suivre les modifications
apportées au code source tout au long du cycle de vie d’un projet. Il a été créé en 2005 par
Linus Torvalds, également créateur du noyau Linux, dans le but de fournir un outil
performant, fiable et sécurisé pour la gestion du développement collaboratif.
Fonctionnement général :
Git fonctionne en local, ce qui signifie que chaque développeur dispose d’une copie
complète du projet (fichiers + historique). Cela rend le système rapide, résilient, et
permet de travailler même sans connexion internet.
Concepts clés :
Dépôt (repository) : un projet Git. Il peut être local ou distant.
Commit : enregistrement d’un état du projet avec un message explicatif.
Branche (branch) : ligne de développement parallèle (ex. : main, develop).
Merge : fusion de branches.
Clone : copie d’un dépôt distant.
Staging area (index) : zone temporaire où l'on prépare les
fichiers avant commit.
Avantages de Git :
Haute performance, même sur de grands projets.
Excellent contrôle des versions et de l’historique.
Gestion simple des branches (création, fusion, suppression).
Large communauté et nombreux outils compatibles.
II.3. Présentation de GitHub
GitHub est une plateforme d’hébergement de dépôts Git en ligne, fondée en 2008 et aujourd’hui
propriété de Microsoft. Elle permet aux développeurs et aux équipes de stocker, gérer, partager
et collaborer sur des projets de développement logiciel à grande échelle.
Fonctions principales :
Hébergement de dépôts Git accessibles depuis n’importe où.
Interface web conviviale pour visualiser les commits, branches, fichiers, et
historiques.
Gestion des pull requests : permet de proposer et discuter des modifications.
Suivi des issues : système de tickets pour signaler des bugs ou suggérer des
améliorations.
Pages GitHub : hébergement gratuit de sites web statiques.
Actions GitHub : automatisation des workflows (tests, déploiements, etc.)
Collaboration :
Attribution de rôles (propriétaire, collaborateur, lecteur).
Suivi des contributions.
Outils pour la revue de code.
Wiki intégré pour la documentation.
Intégration :
GitHub peut être intégré avec d’autres outils comme :
Visual Studio Code, GitHub Desktop
Slack, Trello, Jira
Plateformes de CI/CD comme Jenkins, Travis CI, etc.
Compte gratuit vs. Payant :
Gratuit : projets publics et privés, nombre illimité de collaborateurs.
Pro : fonctionnalités avancées de sécurité, permissions granulaires, etc.
II.4. Différence entre Git et GitHub
Il est essentiel de bien distinguer Git et GitHub, car bien qu’ils soient liés, ils remplissent
des rôles différents dans la gestion de versions et la collaboration de projet.
Git est un outil de versioning en ligne de commande installé localement sur l’ordinateur.
Il permet de créer des dépôts, de suivre les modifications apportées aux fichiers, de créer
des branches, de fusionner du code et de gérer l’historique des versions sans avoir besoin
d'une connexion Internet.
GitHub, quant à lui, est une plateforme en ligne qui permet d’héberger des dépôts Git. Il
offre une interface web et des outils de collaboration comme les pull requests, les issues,
les wikis et les GitHub Actions. GitHub facilite le travail d’équipe en centralisant les
dépôts, en simplifiant la revue de code et en favorisant les échanges entre contributeurs.
Résumé des différences principales :
Elément Git GitHub
Nature Logiciel en ligne de commande Plateforme web d’hébergement
Utilisation principale Gestion des versions locales Partage et collaboration sur des
projets Git
Connexion internet Pas nécessaire pour fonctionner Connexion obligatoire
Interface Ligne de commande Interface graphique intuitive
Hébergement de projet Non Oui
Fonctionnalités Suivi de versions, commits, Pull requests, issues, CI/CD,
branches wikis, actions
En résumé, Git est l’outil de gestion de versions, tandis que GitHub est la plateforme qui héberge
les projets Git pour faciliter la collaboration et le partage.
III. Travail réalisé
Dans cette partie, nous présentons de manière chronologique les étapes réalisées lors du TP.
Chaque étape est illustrée par des captures d’écran (à insérer dans le document).
1. Création du dossier de projet et ouverture dans VS Code
La première étape consiste à créer un dossier intitulé Tp-versionning, destiné à accueillir
les fichiers du TP. Ce dossier a ensuite été ouvert dans l’éditeur de code Visual Studio
Code (VS Code), ce qui permet de travailler sur le projet avec une interface conviviale.
2. Ouverture du dossier dans Git Bash
Ensuite, le même dossier Tp-versionning a été ouvert dans Git Bash, en effectuant un
clic droit dans le dossier > "Git Bash Here". Cela a permis d'exécuter les commandes Git
en ligne de commande depuis le bon emplacement.
3. Création du fichier [Link]
Dans le terminal Git Bash, le fichier [Link] a été créé à l’aide de la commande suivante :
touch [Link]
Cette commande permet de créer un fichier vide dans le répertoire courant. Ce fichier servira
à tester le versioning avec Git.
4. Initialisation du dépôt Git
Après la création du fichier, le dépôt Git a été initialisé dans le dossier avec la commande :
git init
Cette commande crée un répertoire caché .git contenant tous les fichiers nécessaires pour
que Git puisse suivre les modifications du projet.
5. Configuration de l’utilisateur avec git config
Après avoir initialisé le dépôt Git, il est nécessaire de configurer les informations de
l’utilisateur. Cela permet d’associer chaque commit à un auteur identifiable. Les commandes
suivantes ont été utilisées dans Git Bash :
git config --global [Link] "Ton Nom"
git config --global [Link] [Link]@[Link]
[Link] : définit le nom de l’utilisateur qui apparaîtra dans les commits.
[Link] : associe une adresse e-mail aux commits.
Le mot-clé --global signifie que cette configuration s’applique à tous les projets Git de
l’ordinateur. Si on souhaite configurer uniquement ce projet, on peut utiliser --local.
6. Ajout de fichiers au projet
Après la création du fichier [Link], il a été ajouté à la zone de suivi de Git avec la
commande suivante : git add [Link]
Ensuite, un second fichier nommé [Link] a été créé avec la commande : touch [Link]
Après avoir créé les fichiers [Link] et [Link], la commande suivante a été utilisée pour
préparer ces fichiers à être enregistrés par Git : git add .
Cette commande permet d’ajouter tous les fichiers présents dans le dossier, sans avoir besoin de les
nommer un par un.
7. Vérification et enregistrement des fichiers
Après avoir ajouté les fichiers au projet avec la commande git add ., la commande suivante a été
utilisée pour vérifier quels fichiers étaient prêts à être enregistrés : git status
Cette commande affiche la liste des fichiers suivis par Git et indique leur état (nouveaux fichiers,
modifications, etc.).
Ensuite, la commande suivante a été utilisée pour enregistrer les fichiers dans l’historique du
projet : git commit
Cette commande, sans option, ouvre un éditeur de texte (comme Vim ou Nano dans le terminal)
pour écrire un message de commit.
Dans ce cas, un message comme "Ajout des fichiers [Link] et [Link]" a été saisi manuellement
avant d’enregistrer et de fermer l’éditeur.
Et si on refait un git status on verra que les fichiers ne sont plus à l’étape de pré sauvegarde mais
plutôt sauvegardés.
Nous allons modifier le fichier [Link] (par exemple, en ajoutant quelques règles CSS.
Pour observer comment Git détecte les changements apportés au fichier déjà suivi, on effectue un
git status. Git a affiché que le fichier [Link] avait été modifié, ce qui signifie que son contenu a
changé depuis le dernier commit.
Cette étape montre comment Git surveille les fichiers déjà suivis et signale tout changement, ce qui
est très utile pour gérer l’évolution d’un projet.
Nous allons maintenant effectuer à nouveau un git add, mais cette fois-ci en utilisant la commande
git add *.css, afin d’ajouter uniquement le fichier CSS modifié au suivi de Git.
Ensuite, nous enregistrons ce changement à l’aide de la commande suivante :
git commit -m.
8. Création d’une nouvelle branche avec git branch
Cette commande permet de créer une nouvelle ligne de développement parallèle, sans affecter
directement la branche principale (main).
Après avoir créé la branche FichierJS avec la commande git branch FichierJS, j’ai utilisé git
checkout FichierJS pour basculer sur cette nouvelle branche.
Enfin, la commande git branch --list m’a permis de vérifier que j’étais bien positionné sur la
branche FichierJS.
On crée un fichier [Link] et on y insère une ligne de code en JavaScript.
Après avoir créé le fichier [Link], je l’ai intégré dans la page [Link] à l’aide de la balise
<script src="[Link]"></script>, ce qui permet d’associer le fichier JavaScript à la page HTML
pour y ajouter des interactions ou des fonctionnalités dynamiques.
Les modifications ont été ajoutées au projet Git à l’aide de la commande : git add . . Cette
commande permet d’ajouter tous les fichiers modifiés du dossier au suivi de Git.
Ensuite, les changements ont été enregistrés avec la commande suivante :
git commit -m’Ajout du fichier javascript’
Nous allons maintenant revenir sur la branche master et on remarquera que les modifications
fait au niveau de la branche FichierJS sont disparus, on parle alors de développement en
parallèle. Maintenant que nous avons fini de faire nos changements on fusionne nos 2 branches
avec la commande git merge
9. Création du dépôt distant sur GitHub et connexion avec le projet local
Une fois le travail initial terminé en local, nous avons poursuivi en créant un dépôt distant sur
GitHub pour pouvoir y héberger notre projet et le rendre accessible en ligne.
Pour cela, nous nous sommes rendus sur le site [Link] puis avons cliqué sur le
bouton "New repository".
On donne un nom au répertoire et une description
Après la création du dépôt sur GitHub, les trois commandes suivantes ont été utilisées pour lier
le projet local au dépôt distant et envoyer les fichiers sur GitHub :
git remote add origin [Link]
Cette commande sert à lier le dépôt local à un dépôt distant (ici sur GitHub).
Le mot origin est un nom par défaut donné à ce dépôt distant.
L’URL utilisée est celle fournie par GitHub lors de la création du projet.
git branch -M main
Cette commande permet de renommer la branche actuelle en main.
Elle est utile si la branche locale s'appelle encore master (l’ancien nom par défaut de Git)
et que l’on souhaite l’uniformiser avec le nom standard main utilisé sur GitHub.
git push -u origin main
Cette commande permet d’envoyer le contenu du dépôt local vers le dépôt distant
GitHub, dans la branche main.
On copie les trois lignes et on colle sur notre git bash.
Si c’est notre première connexion git nous demandera de mettre nos identifiants.
On revient sur GitHub, rafraichissons la page et nous verrons que notre projet a été bien importé.
Sur commit on peut récupérer le code à n’importe quelle version.
Sur GitHub on voit souvent que certains repository ont une description en dessous. Cela est possible
avec le fichier README. On crée le fichier README avec la commande touch et avec l’extension
.md sinon cela ne s’affichera pas correctement sur GitHub. Ajoutons ensuite la phrase de
description avec notre éditeur de texte.
On ajoute ensuite notre README avec un git add puis git commit
En actualisant la page on ne voit rien, ce qui est normal.
Il faut le pousser avec git push Cela nous permet de mettre tous les changements sur notre
repository de GitHub.
Apres on actualise la page
En cas de changement par l’un des membres de l’équipe.
Un dernier cas de figure c’est qu’en cas de perte ou de suppression du dossier du projet on pourra le
récupérer à travers GitHub sur un fichier Zippé
Conclusion
Ce TP m’a permis de découvrir et de mettre en pratique les bases essentielles du versioning à
travers les outils Git et GitHub. J’ai appris à initialiser un dépôt local, à suivre les modifications de
fichiers, à créer des branches pour travailler de manière indépendante, et à synchroniser mon travail
avec un dépôt distant sur GitHub.
L’ensemble des manipulations m’a montré l’importance de la gestion de versions dans un projet
collaboratif. Grâce à Git, il est possible de suivre chaque étape du développement, de revenir à une
version antérieure en cas d’erreur, et de mieux organiser le travail en équipe à travers des branches
séparées.
Enfin, l’utilisation de GitHub permet de rendre les projets accessibles en ligne, de collaborer à
distance, de documenter efficacement le code avec un fichier [Link], et d’assurer une
traçabilité complète. Ces outils sont aujourd’hui incontournables dans le monde professionnel du
développement logiciel.