Numérique et Sciences Informatiques > Projets et Démarche de Projet Informatique > Travail Collaboratif et Outils > Gestion de versions (Git - notions)

Introduction à Git : Gestion de Versions Collaborative

Ce guide complet introduit Git, un outil essentiel pour la gestion de versions de code en collaboration. Il est spécialement conçu pour les élèves de lycée en Numérique et Sciences Informatiques, en couvrant les concepts fondamentaux, les commandes de base et les flux de travail collaboratifs.

Qu'est-ce que Git ?

Git est un système de contrôle de version distribué (DVCS). Imaginez Git comme un « historique » détaillé de toutes les modifications apportées à vos fichiers. Il permet de suivre chaque changement, de revenir à des versions antérieures et de collaborer efficacement avec d'autres personnes sur un même projet. Contrairement aux anciens systèmes centralisés, chaque développeur possède une copie complète de l'historique du projet, rendant le travail plus flexible et résistant aux problèmes.

Pourquoi utiliser Git ?

  • Suivi des modifications : Enregistre chaque modification effectuée sur vos fichiers.
  • Collaboration : Permet à plusieurs personnes de travailler simultanément sur un même projet sans conflits majeurs.
  • Retour en arrière : Facilite le retour à des versions antérieures en cas d'erreurs.
  • Branches : Permet d'expérimenter de nouvelles fonctionnalités sans perturber la version principale du projet.

Installation de Git

Avant de commencer à utiliser Git, vous devez l'installer sur votre ordinateur. Voici les instructions générales :

  • Windows : Téléchargez l'installateur depuis le site officiel (git-scm.com) et suivez les instructions.
  • macOS : Utilisez Homebrew (`brew install git`) ou téléchargez l'installateur depuis le site officiel.
  • Linux : Utilisez le gestionnaire de paquets de votre distribution (par exemple, `apt-get install git` pour Debian/Ubuntu, `yum install git` pour Fedora/CentOS).
Après l'installation, vérifiez que Git est correctement installé en ouvrant un terminal ou une invite de commandes et en tapant `git --version`. Vous devriez voir la version de Git installée.

Configuration initiale

Après l'installation, configurez Git avec votre nom d'utilisateur et votre adresse e-mail. Ces informations seront utilisées pour identifier vos contributions dans l'historique du projet. Ouvrez un terminal et exécutez les commandes suivantes :

git config --global user.name "Votre Nom"
git config --global user.email "votre.email@example.com"

Vous pouvez vérifier votre configuration avec :

git config --list

Les commandes Git de base

Voici les commandes Git les plus couramment utilisées :

  • git init : Initialise un nouveau dépôt Git dans le répertoire courant.
  • git clone [URL] : Clone un dépôt Git existant depuis une URL.
  • git add [fichier] : Ajoute un fichier à la zone de préparation (staging area).
  • git commit -m "[message]" : Enregistre les modifications préparées avec un message de commit.
  • git status : Affiche l'état du dépôt, les fichiers modifiés et ceux qui sont prêts à être commités.
  • git log : Affiche l'historique des commits.
  • git branch : Liste, crée ou supprime des branches.
  • git checkout [branche] : Bascule vers une autre branche.
  • git merge [branche] : Fusionne une branche dans la branche courante.
  • git push [remote] [branche] : Envoie les commits locaux vers un dépôt distant.
  • git pull [remote] [branche] : Récupère les modifications depuis un dépôt distant et les fusionne dans la branche courante.

Le workflow Git typique

Voici un workflow Git typique pour le développement collaboratif :

  1. Cloner le dépôt : git clone [URL]
  2. Créer une branche pour votre fonctionnalité : git branch [nom_de_la_branche] puis git checkout [nom_de_la_branche] (ou git checkout -b [nom_de_la_branche] pour les deux étapes).
  3. Modifier les fichiers, ajouter les modifications à la zone de préparation : git add [fichier]
  4. Commiter les modifications : git commit -m "[message]"
  5. Envoyer les modifications vers le dépôt distant : git push origin [nom_de_la_branche]
  6. Créer une demande de fusion (Pull Request) : Sur le dépôt distant (GitHub, GitLab, etc.).
  7. Attendre la revue et l'approbation de la demande de fusion.
  8. Fusionner la demande de fusion.

Branches : Le pouvoir de la divergence et de la convergence

Les branches sont un concept fondamental de Git. Elles permettent de créer des copies parallèles du projet, vous permettant de travailler sur de nouvelles fonctionnalités, de corriger des bugs ou d'expérimenter sans affecter la branche principale (généralement appelée `main` ou `master`).

Pourquoi utiliser les branches ?

  • Développement isolé : Isolez vos modifications pour éviter d'introduire des bugs dans la branche principale.
  • Expérimentation : Essayez de nouvelles idées sans risque de casser le projet.
  • Collaboration : Plusieurs développeurs peuvent travailler simultanément sur différentes fonctionnalités sans conflits.
La commande git branch vous permet de créer, lister et supprimer des branches. La commande git checkout permet de basculer entre les branches. La commande git merge permet de fusionner les modifications d'une branche dans une autre.

Conflits de fusion et comment les résoudre

Un conflit de fusion se produit lorsque Git ne peut pas fusionner automatiquement les modifications de deux branches car les mêmes lignes ont été modifiées de manière différente. Lorsque cela se produit, Git vous indique les fichiers qui sont en conflit.

Comment résoudre les conflits ?

  1. Ouvrez le fichier en conflit dans un éditeur de texte.
  2. Recherchez les marqueurs de conflit : <<<<<<< HEAD, ======= et >>>>>>> [nom_de_la_branche].
  3. Choisissez les modifications à conserver, supprimez les marqueurs de conflit.
  4. Enregistrez le fichier.
  5. Ajoutez le fichier résolu à la zone de préparation : git add [fichier].
  6. Commitez les modifications : git commit -m "Résolution des conflits de fusion".

Ce qu'il faut retenir

  • Git est un système de contrôle de version distribué (DVCS).
  • Les commandes de base : init, clone, add, commit, status, log, branch, checkout, merge, push, pull.
  • Les branches permettent le développement isolé et l'expérimentation.
  • Les conflits de fusion se produisent lorsque les mêmes lignes sont modifiées de manière différente.
  • Résoudre les conflits en éditant le fichier, en choisissant les modifications à conserver et en commitant les changements.

FAQ

  • Quelle est la différence entre `git pull` et `git fetch` ?

    `git fetch` récupère les modifications depuis un dépôt distant sans les fusionner dans votre branche locale. `git pull` récupère les modifications et les fusionne automatiquement dans votre branche locale.
  • Comment annuler un commit ?

    Il existe plusieurs façons d'annuler un commit, selon que vous l'avez déjà poussé vers un dépôt distant ou non. Pour annuler le dernier commit localement (sans le supprimer de l'historique) : git revert HEAD. Pour modifier le dernier commit : git commit --amend.
  • Comment ignorer certains fichiers avec Git ?

    Créez un fichier `.gitignore` à la racine de votre dépôt et listez les noms des fichiers ou des répertoires à ignorer (un par ligne). Par exemple :

    *.log
    temp/
    .DS_Store