Git , Workflow basique des projets

 Il est temps de découvrir deux notions indispensables de git, les tag et les branches.

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

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.

git-basic-workflow.png

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

Le principe général est que :

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)

git-vlc.png

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.

git tag -a v1.0 -m "message de version"
git tag
git push origin vx.x
git tag -d vx.x
git push origin --delete vx.x

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 master et dev.

Créer une nouvelle branche pour votre projet

git checkout -b dev
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)

git branch
git branch -a
git checkout nom_branche

Remarque :

Fusionner une branche

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

git checkout master
git merge dev
git push origin master

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 master est téléchargée sur votre poste. Si vous voulez récupérer une autre branche, il faut le préciser :

CAS DU CLONE D’UN NOUVEAU PROJET

git clone --branch version1 https://git.vainsta.fr/projet

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

git remote show origin
git checkout -b version2 origin/version2

Renommer une branche

Cela arrive lors d’une erreur de manipulation ;O

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.

git submodule add adresse_du_depot
git submodule update --remote
git submodule foreach
git submodule foreach git reset --hard
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

Outil → Git → FichierCourant → Ajouter main.c au staging pour commit
Outil → Git → Dépôt local → Commit
Outil → Git → Dépôt distant → push

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.


Revision #3
Created 28 May 2024 12:26:58 by Nicolas
Updated 9 February 2025 15:11:07 by Nicolas