W3docs

Introduction

Découvrez les systèmes de contrôle de version, la gestion du code source, Git, son installation, les clés SSH et les dépôts Git.

Systèmes de contrôle de version

Voici le point de départ du cours Learn Git. À la fin de cette introduction, vous comprendrez ce qu'est un système de contrôle de version, pourquoi les équipes en dépendent, en quoi Git diffère des outils plus anciens et comment faire fonctionner Git sur votre machine. Chaque section ci-dessous renvoie à un chapitre complet où le sujet est expliqué en détail.

Voici le parcours que couvre cette section :

Système de contrôle de version

Un système de contrôle de version (VCS) est un outil qui enregistre les modifications apportées à un ensemble de fichiers au fil du temps, afin que vous puissiez rappeler n'importe quelle version antérieure, voir qui a changé quoi et travailler en parallèle sans vous écraser mutuellement. Il est parfois appelé Source Code Management (SCM) ou Revision Control System (RCS).

Il existe trois familles de VCS, qui se distinguent par l'endroit où l'historique est conservé :

  • Les VCS locaux conservent chaque version dans une base de données sur un seul ordinateur (par exemple, l'ancien outil rcs). Simple, mais une défaillance du disque fait tout perdre et il n'y a pas de véritable collaboration.
  • Les VCS centralisés (CVCS) tels que Subversion (SVN) ou CVS stockent l'historique complet sur un serveur central. Les développeurs extraient une copie de travail, mais l'historique n'existe que sur le serveur. Si le serveur est indisponible, personne ne peut valider ; s'il est perdu sans sauvegarde, l'historique du projet disparaît.
  • Les VCS distribués (DVCS) tels que Git ou Mercurial donnent à chaque développeur une copie complète du dépôt, y compris tout son historique. Vous pouvez valider, créer des branches et consulter le journal entièrement hors ligne, et n'importe quel clone peut restaurer les autres.

Git est un VCS distribué, ce qui est la principale raison pour laquelle il est rapide et résilient.

Gestion du code source

La gestion du code source (SCM) est essentiellement un autre nom pour le contrôle de version. C'est la pratique (et les outils) consistant à suivre les modifications apportées à un dépôt de code source afin de pouvoir consulter l'historique, comparer les révisions et résoudre les conflits de fusion — la situation où deux personnes modifient les mêmes lignes et où l'outil a besoin d'un humain pour décider quelle modification l'emporte.

La SCM permet à chaque développeur de travailler indépendamment sur une branche distincte et de combiner ensuite le travail avec une fusion. Au-delà de l'historique brut, une bonne SCM fournit des annotations/blame, le balisage des versions et la possibilité d'annuler une mauvaise modification en quelques secondes.

Logiciel de contrôle de version

Le logiciel de contrôle de version est le programme concret qui implémente le contrôle de version pour votre équipe. Pour un développeur seul, c'est pratique ; pour une équipe de plusieurs développeurs, c'est une nécessité, car c'est le seul moyen sûr de fusionner le travail de chacun.

Les options populaires incluent Git, Subversion (SVN), CVS, Mercurial et Monotone. Chaque projet choisit celui qui correspond à son flux de travail ; Git est de loin le plus répandu aujourd'hui. Les chapitres suivants comparent leurs avantages et inconvénients en détail.

Qu'est-ce que Git

Git est le système de contrôle de version distribué utilisé dans la majeure partie du monde logiciel. Il suit les modifications de votre code source pendant le développement et gère des projets de toutes tailles, d'un simple script d'un seul fichier au noyau Linux.

Git se distingue pour plusieurs raisons :

  • Branchement local rapide et peu coûteux — créer une branche est quasi instantané car il s'agit simplement d'un pointeur vers un commit.
  • Une zone de transit — vous choisissez exactement quelles modifications seront incluses dans le prochain commit avec git add avant d'exécuter git commit.
  • Fonctionne hors ligne — chaque opération, sauf la synchronisation avec un dépôt distant, s'exécute sur votre copie locale.
  • Intégrité des données — chaque commit est identifié par un hachage SHA-1 de son contenu, ce qui rend toute corruption détectable.

Installer Git

Travailler avec Git commence par l'installer (ou mettre à jour votre copie existante). Le programme d'installation diffère selon le système d'exploitation :

  • macOS — le programme d'installation Git for Mac, Homebrew (brew install git), ou MacPorts.
  • Windows — le package officiel Git for Windows, qui inclut Git Bash.
  • Linux — le gestionnaire de paquets de votre distribution, par ex. sudo apt install git sur Debian/Ubuntu.

Une fois installé, confirmez la version depuis un terminal :

git --version
# git version 2.45.2

Le numéro exact que vous voyez sera celui en cours au moment de l'installation ; toute version 2.x récente convient pour ce cours.

Dépôt Git

Un dépôt Git (« repo ») est le stockage qui regroupe les fichiers de votre projet avec l'historique complet de chaque modification. L'historique est conservé dans un dossier caché .git à la racine du projet.

Vous créez un dépôt de deux façons — en démarrant un nouveau dépôt vide avec git init, ou en copiant un dépôt distant existant avec git clone :

# Turn the current folder into a new, empty repository
git init
# Initialized empty Git repository in /path/to/project/.git/

# Or download an existing project and its full history
git clone https://github.com/user/project.git

Clé SSH

Une clé SSH est un identifiant d'accès utilisé par le protocole SSH (Secure Shell). SSH est un protocole réseau qui vous permet de vous connecter d'un ordinateur à un autre en toute sécurité via un réseau non sécurisé.

Dans Git, une paire de clés SSH (une clé privée que vous gardez secrète et une clé publique que vous téléversez sur GitHub, GitLab, etc.) vous permet d'effectuer des opérations push et pull sans saisir votre mot de passe à chaque fois. Le chapitre sur les clés SSH explique comment générer une clé et l'ajouter à votre compte.

Pratique

Pratique
Which of the following is a feature of Git as a Version Control System?
Which of the following is a feature of Git as a Version Control System?
Was this page helpful?