Gestion de versions avec Git
Sommaire
Git est un logiciel de gestion de versions du code source (VCS, Version Control System / SCM, Source Code Management). C'est un attendu du bloc B1 — gestion des configurations — comme du travail en équipe sur les projets.
1. À quoi sert le versionning
- Conserver un historique des modifications d'un projet : savoir quels changements ont été faits, quand et par qui ; comparer les versions ; revenir en arrière en cas de problème.
- Faciliter le développement collaboratif et rendre le travail en équipe plus efficace.
- Ajouter une fonctionnalité qui n'est pas encore au point sans casser la version stable, grâce aux branches.
2. Système décentralisé
| Dépôt distant | Dépôt local |
|---|---|
| Le code source est hébergé sur un serveur, accessible aux membres de l'équipe. Il peut être en ligne (GitHub, GitLab.com, Bitbucket) ou interne à l'entreprise. | Chaque développeur possède l'intégralité du code source et de l'historique sur sa propre machine. |
C'est ce qui distingue Git des anciens systèmes centralisés : le développeur modifie et valide ses modifications hors connexion, sur son dépôt local. Il décide ensuite de synchroniser en poussant vers le serveur distant.
3. Zones de travail et statuts
| Zone | Contenu | Statut des fichiers |
|---|---|---|
| Working directory | Le répertoire de travail local, où l'on ajoute et modifie les fichiers | non suivi (untracked) ou modifié (modified) |
| Staging area | Zone de transit contenant les fichiers prêts à être versionnés | indexé (staged / tracked) |
| Git repository | Le dépôt, qui contient les fichiers versionnés | validé (committed) |
La zone d'index est ce qui déroute au début, mais c'est elle qui permet de composer un commit propre : on choisit précisément quelles modifications regrouper, plutôt que de tout valider en bloc.
4. Les commandes
Créer un dépôt local
git init # initialiser un dépôt dans un répertoire existant
git clone <url> # cloner un dépôt distant déjà existant
Gérer les fichiers dans le dépôt local
git status # état des fichiers du répertoire de travail
git add fichier # indexer : untracked/modified → tracked
git add . # tout indexer
git commit -m "Message clair" # valider : tracked → committed
git diff # comparer répertoire de travail et zone d'index
git log --oneline # historique des commits
git checkout # revenir à l'état précédent pour un fichier versionné
git reset # revenir à l'état précédent pour un fichier indexé
Le fichier .gitignore empêche l'indexation de certains fichiers : dépendances,
fichiers compilés, et surtout fichiers de configuration contenant des mots de passe. C'est une
mesure de sécurité à part entière — un identifiant poussé sur un dépôt public reste dans l'historique même
après suppression.
Synchroniser avec le dépôt distant
git push # pousser les modifications locales vers le distant
git pull # récupérer le distant vers le local (= git fetch + git merge)
git fetch # récupérer sans fusionner
git remote -v # lister les dépôts distants configurés
Réflexe de travail en équipe : toujours faire un git pull avant de commencer à
coder. Cela évite de développer sur une base obsolète et limite les conflits de fusion au moment du push.
5. Les branches et Git flow
git branch nom_branche # créer une branche
git branch # lister les branches
git checkout nom_branche # basculer sur une branche
git checkout -b nom_branche # créer et basculer en une commande
git merge nom_branche # fusionner une branche dans la branche courante
git branch -d nom_branche # supprimer une branche
La recommandation Git flow organise le travail pour préserver la qualité de la version en production :
| Branche | Rôle |
|---|---|
master / main | Version stable, en production |
develop | Branche de travail pour une amélioration ou une nouvelle fonctionnalité (feature) |
hotfix | Branche créée spécialement pour corriger un bug urgent |
Après leur fusion avec master, les branches hotfix et develop sont
supprimées.
6. GitHub, GitLab et CI/CD
GitHub est une plateforme en ligne qui héberge des dépôts Git publics et privés, avec d'autres fonctionnalités : gestion de tâches, wiki, issues (suivi de bugs).
C'est aussi une forge logicielle open source :
- Fork : obtenir une copie du projet de quelqu'un d'autre pour expérimenter sans affecter le projet original.
- Pull request : proposer ses modifications au propriétaire, qui choisit ou non de les intégrer au dépôt original.
GitLab intègre en plus des fonctionnalités d'intégration continue (CI, Continuous Integration) et de livraison continue (CD, Continuous Delivery) : automatisation des builds, des tests et des déploiements. GitLab.com est la plateforme en ligne ; GitLab s'installe aussi sur un serveur interne.
Enfin, Git s'utilise aussi hors ligne de commande : de nombreux clients graphiques existent, et la plupart des EDI (Visual Studio, Eclipse, Android Studio, VS Code) proposent une extension Git intégrée.