← Développement

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

2. Système décentralisé

Dépôt distantDé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

ZoneContenuStatut des fichiers
Working directoryLe répertoire de travail local, où l'on ajoute et modifie les fichiersnon suivi (untracked) ou modifié (modified)
Staging areaZone de transit contenant les fichiers prêts à être versionnésindexé (staged / tracked)
Git repositoryLe dépôt, qui contient les fichiers versionnésvalidé (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 :

BrancheRôle
master / mainVersion stable, en production
developBranche de travail pour une amélioration ou une nouvelle fonctionnalité (feature)
hotfixBranche 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 :

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.