table des matières
  1. Workflow BTS CIEL-IR
    1. Gérer les tags
  2. Travailler avec les branches
    1. Créer une nouvelle branche pour votre projet
    2. Travailler avec des branches locales (sur le PC de développement)
    3. Fusionner une branche
    4. Travailler avec des branches distantes (sur le serveur)
      1. Cas du clone d’un nouveau projet
    5. Cas d’un projet déjà cloné, récupération d’une branche supplémentaire
  3. Renommer une branche
  4. SubModules
  5. Intégration aux IDE
    1. Utilisation de GIT dans l’IDE QtCreator
      1. Versionner un fichier
    2. Utilisation de GIT dans l’IDE VsCode

Le précédent tutoriel vous a présenté git et une gestion basique des versions de vos projets. Il est temps de découvrir deux notions indispensables de git, les tag et les branches.

  • Un tag est une version de logiciel stable, étiqueté par un numéro de version.
  • Une branche vous permet de diverger de la ligne principale de développement et de travailler sans impacter celle-ci.

Il faut bien comprendre que l’ensemble des versions des fichiers reste présente sur votre poste (et sur le serveur). Vous pouvez naviguer d’une branche à l’autre, d’une version à l’autre et connaître les changements apportés à chaque commit.

Workflow BTS CIEL-IR

Le workflow décrit ci-dessous est un workflow “basique” pour une gestion de projet avec un seul développeur sur le projet. Nous étudierons dans votre formation un workflow plus évolué pour travailler à plusieurs développeurs sur le même projet.

Workflow1

L’image présente deux lignes de développement, main et dev, appelées branches pour git. On voit aussi que les commit sur la branche main sont les seuls à posséder des numéros de versions.

Le principe général est que :

  • La branche main contient toujours une version stable du logiciel
  • Tous les développements de nouvelles fonctionnalités sont fait sur la branche dev
  • Lorsque la fonctionnalité est complètement stable, on fusionne la branche main avec la branche de dev
  • A ce moment, on crée un tag pour la nouvelle version stable

Remarque : Le cycle de développement décrit ci-dessus est répété pour chaque nouvelle fonctionnalité

Remarque : Ce workflow (tag et branch) est celui suivi par la majorité des projets utilisant git (comme VLC ci-dessous)

Workflow VLC

Gérer les tags

Les tags vous permettent d’avoir des numéros de versions de vos développements. Ils sont à créer pour chaque version stable.

  • Créer un tag (exemple v1.0)
git tag -a v1.0 -m "message de version"
  • Voir les tags du projet
git tag
  • Pousser le tag sur le serveur distant
git push origin vx.x
  • Supprimer un tag en local
git tag -d vx.x
  • Supprimer un tag sur le serveur distant
git push origin --delete vx.x
  • Modifier un tag existant

Un tag étant un lien vers un numéro de commit, il est possible de modifier le lien entre le tag et le numéro de commit

voir Taguer de nouveau/Remplacer d’anciens tags

Travailler avec les branches

Créer une branche signifie diverger de la ligne principale de développement et continuer à travailler sans impacter cette ligne. Dans un premier temps, vous aurez deux branches à gérer main et dev.

Créer une nouvelle branche pour votre projet

  • Créer une branche locale sur votre PC
git checkout -b dev
  • Pousser la branche locale vers le dépôt distant
git push -u origin dev

Remarque : La branche dev est créée automatiquement sur le serveur.

Travailler avec des branches locales (sur le PC de développement)

  • Voir les branches locales
git branch
  • Voir les branches locales et distantes
git branch -a
  • Basculer sur une autre branche
git checkout nom_branche

Remarque :

  • la commande checkout -b crée une branche si elle n’existe pas.
  • la commande checkout permet de basculer sur une autre branche (elle doit exister)

Fusionner une branche

Lorsque la fonctionnalité est développée, vous devez fusionner (merge) la branche main et dev. Cela va ajouter toutes les modifications développées sur dev à main.

  • Se positionner sur la branche à fusionner
git checkout main
  • Fusionner dev à main
git merge dev
  • Pousser le travail sur le serveur
git push origin main

Remarque :
Juste après une fusion, c’est le moment de créer le tag de version.

Travailler avec des branches distantes (sur le serveur)

Par défaut, lorsque vous clonez un projet, seule la branche main est téléchargée sur votre poste. Si vous voulez récupérer une autre branche, il faut le préciser :

  • Soit lors du clone du projet
  • Ou si c’est un projet déjà cloné, avec un checkout de la branche distante.

Cas du clone d’un nouveau projet

  • Cloner une branche spécifique (ici version1)
git clone --branch version1 https://gitlab.ciel-kastler.fr/POO/POO_lampe.git Lampe_v1

Cas d’un projet déjà cloné, récupération d’une branche supplémentaire

  • Voir les branches distantes
git remote show origin
  • Récupérer une (autre) branche distante(ici origin/version2) dans son dépôt local
git checkout -b version2 origin/version2

Renommer une branche

Cela arrive lors d’une erreur de manipulation ;O

  • Renommer une branche locale
git branch -m new_branch_name

SubModules

Les sous modules vous permettent de gérer les dépendances. C’est à dire des bibliothèques utiles (ou indispensables) au fonctionnement de votre projet dont vous n’êtes pas responsables (en tant que développeur)

Un sous module va permettre d’intégrer le code de la bibliothèque à votre projet et de simplement conserver un lien vers celle-ci.

Le sous module sera présent dans votre répertoire local. Seul le lien vers le sous module apparaîtra sur votre dépôt distant.

  • Ajouter un sous module
git submodule add adresse_du_depot
  • Récupérer les modifications d’un sous module chargé
git submodule update --remote
  • Lister tous les sous modules
git submodule foreach
  • Réinitialiser les changements dans les sous modules (solution 1)
git submodule foreach git reset --hard
  • Réinitialiser les changements dans les sous modules (solution 2)
git submodule deinit -f .
git submodule update --init

Intégration aux IDE

Utilisation de GIT dans l’IDE QtCreator

Git est intégré à QTCreator. Si un dépôt Git est déjà initialisé, QtCreator le détecte automatiquement.

Attention : Je ne conseille pas d’utiliser les commandes ci-après avant de maîtriser l’outil en ligne de commande

Versionner un fichier

  • Ajouter le fichier (équivalent de git add)
Outil → Git → FichierCourant → Ajouter main.c au staging pour commit
  • Commiter le fichier (équivalent de git commit)
Outil → Git → Dépôt local → Commit
  • Pousser sur le dépôt distant
Outil → Git → Dépôt distant → push
  • Vérifier que les modifications apparaissent sur le serveur.

Utilisation de GIT dans l’IDE VsCode

La documentation n’est pas détaillée, mais de manière générale, tous les IDE modernes détectent automatiquement git et les autres systèmes de gestion de version.