{"id":5020,"date":"2025-07-18T09:10:26","date_gmt":"2025-07-18T09:10:26","guid":{"rendered":"https:\/\/techhub.saworks.io\/docs\/tutoriel-github\/les-bases-de-github-partie-1-sur-2\/quest-ce-que-le-controle-de-version\/"},"modified":"2025-07-31T11:55:26","modified_gmt":"2025-07-31T11:55:26","slug":"quest-ce-que-le-controle-de-version","status":"publish","type":"docs","link":"https:\/\/techhub.saworks.io\/fr\/docs\/tutoriel-github\/les-bases-de-github-partie-1-sur-2\/quest-ce-que-le-controle-de-version\/","title":{"rendered":"Qu\u2019est-ce que le contr\u00f4le de version ?"},"content":{"rendered":"\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<p>Un&nbsp;<strong>syst\u00e8me de contr\u00f4le de version<\/strong>&nbsp;(ou&nbsp;<strong>VCS<\/strong>&nbsp;pour&nbsp;<em>Version Control System<\/em>) est un programme ou un ensemble de programmes qui permet de&nbsp;<strong>suivre les modifications apport\u00e9es \u00e0 un ensemble de fichiers<\/strong>.<br>L\u2019un des objectifs d\u2019un VCS est de pouvoir&nbsp;<strong>retrouver facilement des versions ant\u00e9rieures<\/strong>&nbsp;d\u2019un fichier ou de l\u2019ensemble du projet. Un autre objectif est de permettre \u00e0 plusieurs membres d\u2019une \u00e9quipe de&nbsp;<strong>travailler simultan\u00e9ment sur un projet<\/strong>, m\u00eame sur les m\u00eames fichiers, sans interf\u00e9rer avec le travail des autres.<\/p>\n\n\n\n<p>Un autre nom pour un VCS est&nbsp;<strong>syst\u00e8me de gestion de configuration logicielle<\/strong>&nbsp;(<em>SCM<\/em>&nbsp;pour&nbsp;<em>Software Configuration Management<\/em>). Les deux termes sont souvent utilis\u00e9s de mani\u00e8re interchangeable \u2014 en fait, la documentation officielle de Git se trouve sur git-scm.com.<br>Techniquement, le contr\u00f4le de version n\u2019est qu\u2019une des pratiques couvertes par la gestion de configuration logicielle. Un VCS peut \u00e9galement \u00eatre utilis\u00e9 pour des projets autres que des logiciels, comme des livres ou des tutoriels en ligne.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Avec un VCS, vous pouvez :<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Voir toutes les modifications apport\u00e9es \u00e0 votre projet,&nbsp;<strong>quand<\/strong>&nbsp;elles ont \u00e9t\u00e9 faites et&nbsp;<strong>par qui<\/strong>.<\/li>\n\n\n\n<li>Ajouter un&nbsp;<strong>message explicatif<\/strong>&nbsp;\u00e0 chaque modification.<\/li>\n\n\n\n<li><strong>R\u00e9cup\u00e9rer des versions pr\u00e9c\u00e9dentes<\/strong>&nbsp;du projet ou de fichiers individuels.<\/li>\n\n\n\n<li>Cr\u00e9er des&nbsp;<strong>branches<\/strong>&nbsp;pour exp\u00e9rimenter des modifications. Cela permet \u00e0 plusieurs personnes de travailler sur diff\u00e9rentes fonctionnalit\u00e9s ou corrections de bugs&nbsp;<strong>en parall\u00e8le<\/strong>, sans affecter la branche principale. Vous pouvez ensuite fusionner les modifications souhait\u00e9es dans la branche principale.<\/li>\n\n\n\n<li><strong>Ajouter des balises<\/strong>&nbsp;\u00e0 une version, par exemple pour marquer une nouvelle version de publication.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u00c0 propos de Git<\/strong><\/h4>\n\n\n\n<p><strong>Git<\/strong>&nbsp;est un VCS&nbsp;<strong>rapide<\/strong>,&nbsp;<strong>polyvalent<\/strong>,&nbsp;<strong>hautement \u00e9volutif<\/strong>,&nbsp;<strong>gratuit<\/strong>&nbsp;et&nbsp;<strong>open source<\/strong>.<br>Son auteur principal est&nbsp;<strong>Linus Torvalds<\/strong>, le cr\u00e9ateur de Linux.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Contr\u00f4le de version distribu\u00e9<\/strong><\/h3>\n\n\n\n<p>Les premi\u00e8res versions des syst\u00e8mes de contr\u00f4le de version (VCS), comme&nbsp;<strong>CVS<\/strong>,&nbsp;<strong>Subversion (SVN)<\/strong>&nbsp;et&nbsp;<strong>Perforce<\/strong>, utilisaient un&nbsp;<strong>serveur centralis\u00e9<\/strong>&nbsp;pour stocker l\u2019historique d\u2019un projet. Cette centralisation faisait du serveur un&nbsp;<strong>point de d\u00e9faillance unique<\/strong>&nbsp;potentiel.<\/p>\n\n\n\n<p><strong>Git<\/strong>&nbsp;est&nbsp;<strong>distribu\u00e9<\/strong>, ce qui signifie que l\u2019historique complet d\u2019un projet est stock\u00e9&nbsp;<strong>\u00e0 la fois sur le client et sur le serveur<\/strong>. Vous pouvez modifier des fichiers sans connexion r\u00e9seau, valider les changements localement, puis synchroniser avec le serveur une fois la connexion r\u00e9tablie.<br>Si un serveur tombe en panne, vous disposez toujours d\u2019une&nbsp;<strong>copie locale<\/strong>&nbsp;du projet. Techniquement, vous n\u2019avez m\u00eame pas besoin de serveur : les modifications peuvent \u00eatre partag\u00e9es par e-mail ou via des supports amovibles \u2014 mais en pratique, personne n\u2019utilise Git de cette mani\u00e8re.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Terminologie Git<\/strong><\/h3>\n\n\n\n<p>Pour comprendre Git, il faut conna\u00eetre sa terminologie. Voici une liste de termes fr\u00e9quemment utilis\u00e9s. Ne vous inqui\u00e9tez pas des d\u00e9tails pour l\u2019instant \u2014 vous vous familiariserez avec ces termes au fil des exercices du module.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Arborescence de travail (Working tree)<\/strong>&nbsp;: Ensemble de r\u00e9pertoires et fichiers imbriqu\u00e9s contenant le projet en cours.<\/li>\n\n\n\n<li><strong>D\u00e9p\u00f4t (Repository ou repo)<\/strong>&nbsp;: R\u00e9pertoire situ\u00e9 \u00e0 la racine de l\u2019arborescence de travail, o\u00f9 Git conserve tout l\u2019historique et les m\u00e9tadonn\u00e9es du projet.<br>Un&nbsp;<strong>d\u00e9p\u00f4t nu (bare repo)<\/strong>&nbsp;n\u2019est pas li\u00e9 \u00e0 une arborescence de travail ; il est utilis\u00e9 pour le partage ou la sauvegarde. Il se termine souvent par&nbsp;<code>.git<\/code>&nbsp;(ex. :&nbsp;<code>projet.git<\/code>).<\/li>\n\n\n\n<li><strong>Hash<\/strong>&nbsp;: Nombre g\u00e9n\u00e9r\u00e9 par une fonction de hachage repr\u00e9sentant le contenu d\u2019un fichier ou objet sous forme de chiffres fixes. Git utilise des&nbsp;<strong>hashes de 160 bits<\/strong>. Cela permet \u00e0 Git de d\u00e9tecter les modifications de fichiers en comparant les hashes, ind\u00e9pendamment de la date ou de l\u2019heure.<\/li>\n\n\n\n<li><strong>Objet (Object)<\/strong>&nbsp;: Un d\u00e9p\u00f4t Git contient quatre types d\u2019objets, chacun identifi\u00e9 par un&nbsp;<strong>hash SHA-1<\/strong>&nbsp;:\n<ul class=\"wp-block-list\">\n<li><strong>Blob<\/strong>&nbsp;: contient un fichier.<\/li>\n\n\n\n<li><strong>Tree<\/strong>&nbsp;: repr\u00e9sente un r\u00e9pertoire (noms, permissions, hashes).<\/li>\n\n\n\n<li><strong>Commit<\/strong>&nbsp;: version sp\u00e9cifique de l\u2019arborescence.<\/li>\n\n\n\n<li><strong>Tag<\/strong>&nbsp;: nom attach\u00e9 \u00e0 un commit.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Commit<\/strong>&nbsp;: En tant que verbe, signifie cr\u00e9er un objet de commit. Cela revient \u00e0 valider les modifications pour qu\u2019elles soient visibles par d\u2019autres.<\/li>\n\n\n\n<li><strong>Branche (Branch)<\/strong>&nbsp;: S\u00e9rie nomm\u00e9e de commits li\u00e9s. Le commit le plus r\u00e9cent est appel\u00e9&nbsp;<strong>head<\/strong>.<br>La branche par d\u00e9faut est appel\u00e9e&nbsp;<strong>main<\/strong>&nbsp;(ou&nbsp;<strong>master<\/strong>&nbsp;dans certains cas). Le head de la branche active est nomm\u00e9&nbsp;<strong>HEAD<\/strong>.<br>Les branches permettent de travailler ind\u00e9pendamment, puis de fusionner les modifications dans la branche principale.<\/li>\n\n\n\n<li><strong>Distant (Remote)<\/strong>&nbsp;: R\u00e9f\u00e9rence nomm\u00e9e vers un autre d\u00e9p\u00f4t Git. Par d\u00e9faut, Git cr\u00e9e un&nbsp;<strong>remote<\/strong>&nbsp;nomm\u00e9&nbsp;<code>origin<\/code>&nbsp;pour les op\u00e9rations&nbsp;<code>push<\/code>&nbsp;et&nbsp;<code>pull<\/code>.<\/li>\n\n\n\n<li><strong>Commandes, sous-commandes et options<\/strong>&nbsp;:<br>Les op\u00e9rations Git s\u2019effectuent via des commandes comme&nbsp;<code>git push<\/code>&nbsp;ou&nbsp;<code>git pull<\/code>.\n<ul class=\"wp-block-list\">\n<li><code>git<\/code>&nbsp;est la commande principale<\/li>\n\n\n\n<li><code>push<\/code>&nbsp;ou&nbsp;<code>pull<\/code>&nbsp;sont des&nbsp;<strong>sous-commandes<\/strong><\/li>\n\n\n\n<li>Les&nbsp;<strong>options<\/strong>&nbsp;sont ajout\u00e9es avec&nbsp;<code>-<\/code>&nbsp;ou&nbsp;<code>--<\/code>&nbsp;(ex. :&nbsp;<code>git reset --hard<\/code>)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>Ces termes \u2014 et d\u2019autres comme&nbsp;<code>push<\/code>&nbsp;et&nbsp;<code>pull<\/code>&nbsp;\u2014 deviendront plus clairs avec la pratique. N\u2019h\u00e9sitez pas \u00e0 revenir \u00e0 ce glossaire apr\u00e8s avoir termin\u00e9 le module.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Ligne de commande Git<\/strong><\/h3>\n\n\n\n<p>Il existe plusieurs interfaces graphiques (GUI) pour Git, comme&nbsp;<strong>GitHub Desktop<\/strong>.<br>De nombreux \u00e9diteurs de code, comme&nbsp;<strong>Visual Studio Code<\/strong>, int\u00e8grent aussi Git.<br>Mais aucun ne couvre&nbsp;<strong>toutes les fonctionnalit\u00e9s<\/strong>&nbsp;de Git.<\/p>\n\n\n\n<p>Les exercices de ce module utilisent&nbsp;<strong>la ligne de commande Git<\/strong>, en particulier dans&nbsp;<strong>Azure Cloud Shell<\/strong>.<br>L\u2019interface en ligne de commande fonctionne de la m\u00eame mani\u00e8re sur tous les syst\u00e8mes d\u2019exploitation, et donne acc\u00e8s \u00e0&nbsp;<strong>toutes les capacit\u00e9s de Git<\/strong>.<br>Les d\u00e9veloppeurs qui utilisent uniquement une interface graphique se retrouvent parfois bloqu\u00e9s par des erreurs qu\u2019ils ne peuvent r\u00e9soudre qu\u2019en revenant \u00e0 la ligne de commande.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Git et GitHub<\/strong><\/h3>\n\n\n\n<p>En travaillant avec Git, vous vous demanderez peut-\u00eatre quelles sont les diff\u00e9rences entre&nbsp;<strong>Git<\/strong>&nbsp;et&nbsp;<strong>GitHub<\/strong>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Git<\/strong>&nbsp;est un&nbsp;<strong>syst\u00e8me de contr\u00f4le de version distribu\u00e9 (DVCS)<\/strong>&nbsp;que plusieurs d\u00e9veloppeurs peuvent utiliser pour travailler sur un projet. Il permet de g\u00e9rer des branches locales, puis de les&nbsp;<strong>pousser<\/strong>&nbsp;vers un d\u00e9p\u00f4t distant.<\/li>\n\n\n\n<li><strong>GitHub<\/strong>&nbsp;est une&nbsp;<strong>plateforme cloud<\/strong>&nbsp;qui repose sur Git. Elle facilite la collaboration gr\u00e2ce \u00e0 :\n<ul class=\"wp-block-list\">\n<li>une interface web<\/li>\n\n\n\n<li>des outils en ligne de commande suppl\u00e9mentaires<\/li>\n\n\n\n<li>un flux de travail simplifi\u00e9<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>GitHub agit comme le&nbsp;<strong>d\u00e9p\u00f4t distant<\/strong>&nbsp;mentionn\u00e9 pr\u00e9c\u00e9demment.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Fonctionnalit\u00e9s cl\u00e9s de GitHub :<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Issues<\/strong>&nbsp;(tickets)<\/li>\n\n\n\n<li><strong>Discussions<\/strong><\/li>\n\n\n\n<li><strong>Pull requests<\/strong><\/li>\n\n\n\n<li><strong>Notifications<\/strong><\/li>\n\n\n\n<li><strong>\u00c9tiquettes (Labels)<\/strong><\/li>\n\n\n\n<li><strong>Actions<\/strong><\/li>\n\n\n\n<li><strong>Forks<\/strong><\/li>\n\n\n\n<li><strong>Projets<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Pour en savoir plus sur GitHub, consultez le module&nbsp;<strong>Introduction \u00e0 GitHub<\/strong>&nbsp;sur Tutoriel Github ou la documentation&nbsp;<strong>Premiers pas avec GitHub<\/strong>.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\u2705&nbsp;<strong>\u00c9tape suivante : essayez Git par vous-m\u00eame !<\/strong><\/h3>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Un&nbsp;syst\u00e8me de contr\u00f4le de version&nbsp;(ou&nbsp;VCS&nbsp;pour&nbsp;Version Control System) est un programme ou un ensemble de programmes qui permet de&nbsp;suivre les modifications apport\u00e9es \u00e0 un [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":4991,"menu_order":3,"comment_status":"closed","ping_status":"closed","template":"","doc_tag":[],"doc_badge":[],"class_list":["post-5020","docs","type-docs","status-publish","hentry"],"author_avatar":"https:\/\/secure.gravatar.com\/avatar\/6a70e7c73db9f245e650948d09d74f61?s=96&d=mm&r=g","author_name":"Annick N'dri","_links":{"self":[{"href":"https:\/\/techhub.saworks.io\/fr\/wp-json\/wp\/v2\/docs\/5020"}],"collection":[{"href":"https:\/\/techhub.saworks.io\/fr\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/techhub.saworks.io\/fr\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/techhub.saworks.io\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/techhub.saworks.io\/fr\/wp-json\/wp\/v2\/comments?post=5020"}],"version-history":[{"count":0,"href":"https:\/\/techhub.saworks.io\/fr\/wp-json\/wp\/v2\/docs\/5020\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/techhub.saworks.io\/fr\/wp-json\/wp\/v2\/docs\/4991"}],"wp:attachment":[{"href":"https:\/\/techhub.saworks.io\/fr\/wp-json\/wp\/v2\/media?parent=5020"}],"wp:term":[{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/techhub.saworks.io\/fr\/wp-json\/wp\/v2\/doc_tag?post=5020"},{"taxonomy":"doc_badge","embeddable":true,"href":"https:\/\/techhub.saworks.io\/fr\/wp-json\/wp\/v2\/doc_badge?post=5020"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}