code embarqué

Git pour les nuls : comprendre le versioning dans les projets électroniques

Git expliqué simplement : dépôt, commit, branche, merge. Découvrez pourquoi le versioning est indispensable pour vos projets électroniques et firmware.

Vous venez de perdre trois jours de travail parce que quelqu’un a écrasé le bon fichier avec une ancienne version. Ou bien vous cherchez désespérément quelle modification a introduit ce bug apparu « soudainement » dans votre firmware. Ces situations, nous les rencontrons régulièrement chez nos clients qui n’utilisent pas encore de système de versioning. La solution existe depuis 2005, elle s’appelle Git, et elle a transformé la manière dont le monde entier développe du logiciel.

Git n’est pas réservé aux développeurs web ou aux experts en ligne de commande. C’est un outil fondamental pour tout projet technique — firmware, logiciel embarqué, conception électronique, documentation. Pourtant, beaucoup d’ingénieurs et de décideurs dans l’industrie électronique ne l’utilisent pas encore, souvent par méconnaissance ou parce que le jargon technique leur semble intimidant.

Chez AESTECHNO, nous utilisons Git au quotidien depuis plus de 10 ans sur l’ensemble de nos projets de développement de logiciels embarqués. Cet article est conçu pour démystifier Git, expliquer ses concepts fondamentaux dans un langage accessible, et montrer pourquoi il est devenu incontournable dans tout projet technique moderne.

Besoin de structurer le versioning de vos projets ?

Nous vous accompagnons dans la mise en place de Git et des bonnes pratiques de gestion de code :

  • Configuration de dépôts Git adaptés à vos projets firmware et électronique
  • Formation de vos équipes aux workflows Git professionnels
  • Intégration avec GitLab ou GitHub et mise en place de CI/CD

Échangeons sur votre projet — 30 min gratuites

Qu’est-ce que Git et pourquoi l’utiliser ?

Git est un système de contrôle de version distribué, c’est-à-dire un outil qui enregistre l’historique complet de toutes les modifications apportées aux fichiers d’un projet. Chaque changement est horodaté, identifié par son auteur, et accompagné d’un message explicatif. Il permet à plusieurs personnes de travailler simultanément sur le même projet sans risque de conflits destructeurs.

Concrètement, Git répond à des problèmes que tout responsable de projet technique connaît :

  • La perte de travail : sans Git, un fichier écrasé par erreur est perdu. Avec Git, chaque version est conservée et récupérable en quelques secondes
  • Le chaos des versions : fini les dossiers « firmware_v2_final_VRAIMENT_final_corrigé ». Git gère les versions de manière structurée et fiable
  • La collaboration difficile : deux ingénieurs qui modifient le même fichier en parallèle ne se marchent plus sur les pieds — Git détecte et gère les conflits
  • L’absence de traçabilité : quand un bug apparaît, Git permet de retrouver exactement quelle modification l’a introduit, quand, et par qui

Git a été créé en 2005 par Linus Torvalds pour gérer le développement du noyau Linux — un projet avec des milliers de contributeurs répartis dans le monde entier. Si Git peut gérer le noyau Linux, il peut gérer votre projet firmware.

Les concepts fondamentaux de Git expliqués simplement

Les termes techniques de Git peuvent sembler intimidants au premier abord, mais les concepts sous-jacents sont en réalité très intuitifs. Comprendre ces quelques notions de base suffit pour utiliser Git efficacement au quotidien et pour dialoguer avec vos équipes de développement sur un pied d’égalité.

Le dépôt (repository)

Un dépôt Git, souvent abrégé « repo », est simplement un dossier de projet qui contient l’historique complet de toutes ses modifications. Quand vous « initialisez un dépôt Git » dans un dossier, Git crée un sous-dossier caché (.git) où il stocke tout l’historique. Le dossier lui-même ne change pas d’apparence — vos fichiers restent exactement là où ils sont.

Un dépôt peut être local (sur votre ordinateur) ou distant (sur un serveur comme GitLab ou GitHub). La force de Git est que chaque personne qui travaille sur le projet possède une copie complète du dépôt, historique inclus. Même si le serveur tombe en panne, rien n’est perdu.

Le commit : une photo de votre projet

Un commit est un instantané de l’état de votre projet à un moment donné. Pensez-y comme une sauvegarde intelligente : au lieu d’enregistrer tous les fichiers à chaque fois, Git ne stocke que les différences par rapport au commit précédent. Chaque commit est accompagné d’un message qui décrit la modification effectuée, par exemple : « Correction du bug de communication SPI en mode esclave ».

Les commits forment une chaîne chronologique — l’historique de votre projet. Vous pouvez à tout moment revenir à n’importe quel commit précédent, comparer deux versions, ou identifier exactement quand un changement a été introduit. C’est cette traçabilité qui fait de Git un outil indispensable pour les projets soumis à des exigences de qualité ou de certification CE/RED.

La branche : travailler en parallèle sans risque

Une branche est une ligne de développement indépendante. Par défaut, Git crée une branche principale appelée main (anciennement master). Quand un développeur veut ajouter une fonctionnalité ou corriger un bug, il crée une nouvelle branche à partir de main. Il travaille dessus librement, sans affecter la branche principale ni le travail des autres.

L’analogie la plus parlante : imaginez que main est le tronc d’un arbre, et que chaque branche est… une branche. Elle part du tronc, pousse dans sa direction, et peut éventuellement être rattachée au tronc une fois que le travail est terminé et validé.

En pratique, sur un projet firmware, vous pourriez avoir :

  • main — la version stable, celle qui tourne en production
  • feature/nouveau-driver-capteur — le développement d’un nouveau driver
  • fix/bug-communication-ble — la correction d’un bug Bluetooth
  • release/v2.1 — la préparation de la prochaine version

Le merge : réunir les branches

Le merge (fusion) est l’opération qui intègre les modifications d’une branche dans une autre — typiquement, intégrer une branche de fonctionnalité dans main. Git analyse les modifications des deux côtés et les combine automatiquement. Dans la grande majorité des cas, cette fusion se fait sans intervention humaine.

Quand deux personnes ont modifié les mêmes lignes du même fichier, Git signale un « conflit » et demande à un humain de trancher. Ce n’est pas une erreur — c’est un mécanisme de sécurité. Mieux vaut résoudre un conflit explicitement que de perdre silencieusement le travail de quelqu’un.

Le remote : synchroniser avec le serveur

Un remote est un dépôt distant — la copie du projet hébergée sur un serveur (GitLab, GitHub, Bitbucket). Les opérations push (envoyer vos commits vers le serveur) et pull (récupérer les commits des autres depuis le serveur) permettent de synchroniser le travail de l’équipe. Le remote sert aussi de sauvegarde centralisée : tant que le serveur est opérationnel, le projet est en sécurité.

Les avantages concrets de Git pour les projets techniques

Au-delà de la théorie, Git apporte des bénéfices mesurables et immédiats aux équipes qui travaillent sur des projets électroniques, firmware et logiciel embarqué. Nous avons constaté chez AESTECHNO que l’adoption de Git transforme la dynamique de collaboration et la qualité des livrables de manière significative dès les premières semaines.

Traçabilité complète

Chaque modification est enregistrée avec son auteur, sa date et son contexte. Quand un client demande « qu’est-ce qui a changé entre la version 1.3 et la version 1.4 ? », la réponse est immédiate. Quand un bug apparaît après une mise à jour, la commande git bisect permet de retrouver automatiquement le commit responsable parmi des centaines de modifications. Cette traçabilité est aussi un atout majeur lors des audits de certification ou de due diligence technique.

Collaboration fluide

Plusieurs développeurs travaillent en parallèle sur le même projet sans se marcher sur les pieds. Un ingénieur firmware développe un nouveau driver pendant qu’un autre optimise la consommation d’énergie — chacun sur sa branche, sans interférence. Le merge intègre ensuite les deux contributions de manière contrôlée. Pour les projets impliquant du design électronique et du firmware, cette capacité à paralléliser le travail est déterminante.

Rollback sécurisé

Une mise à jour firmware a introduit un dysfonctionnement critique ? Avec Git, revenir à la version précédente prend quelques secondes. Pas besoin de chercher dans les archives, de demander à un collègue s’il a gardé une copie, ou de reconstruire le firmware à partir de souvenirs fragmentaires. Le rollback est instantané et fiable parce que chaque version du code est préservée intégralement dans l’historique Git.

Revue de code systématique

Les plateformes comme GitLab et GitHub offrent un mécanisme de « merge request » (ou « pull request ») qui permet de soumettre ses modifications à la revue de l’équipe avant de les intégrer dans la branche principale. Un second regard sur le code avant la fusion réduit les bugs, partage la connaissance au sein de l’équipe, et améliore la qualité globale du projet. C’est une pratique que nous considérons comme indispensable sur tout projet critique.

Cas d’usage dans les projets électronique et firmware

Git ne se limite pas au développement logiciel pur. Dans un bureau d’études comme le nôtre, le versioning s’applique à de nombreux aspects d’un projet technique. Voici les cas d’usage que nous rencontrons fréquemment dans nos activités de bureau d’études électronique.

Firmware et logiciel embarqué

C’est le cas d’usage le plus naturel. Le code source du firmware — qu’il soit écrit en C, C++, Rust ou Python — est versionné dans Git. Chaque fonctionnalité est développée sur une branche dédiée, testée, revue par un pair, puis intégrée dans la branche principale. Les releases sont marquées par des tags Git (v1.0, v1.1, v2.0) qui permettent de retrouver instantanément le code exact qui correspond à chaque version livrée.

Scripts de test et de production

Les scripts de test fonctionnel, les procédures de programmation en production, les configurations de banc de test — tout cela évolue avec le projet et bénéficie du même versioning que le code firmware. Quand un processus de validation change, l’historique Git permet de retrouver l’ancienne procédure si nécessaire.

Documentation technique

Les spécifications, les notes d’application, les guides d’utilisation — ces documents évoluent avec le produit. Les versionner dans Git garantit que la documentation reste synchronisée avec le code. Un tag de release inclut non seulement le firmware mais aussi la documentation correspondante.

Fichiers de conception électronique

Les schémas et les fichiers de conception PCB (KiCad, Altium) peuvent aussi être versionnés dans Git. Bien que la comparaison visuelle des schémas soit moins intuitive que celle du code texte, l’historique et la capacité de rollback restent précieux. Des outils comme KiCad intègrent de plus en plus nativement le support Git.

Outils et plateformes recommandés

Git est un outil en ligne de commande, mais il existe de nombreuses plateformes et interfaces graphiques qui le rendent accessible à tous les profils — y compris ceux qui ne sont pas à l’aise avec le terminal. Voici les solutions que nous recommandons en fonction des besoins et du contexte du projet.

Plateformes d’hébergement

  • GitLab : notre recommandation pour les projets industriels. GitLab peut être hébergé en interne (on-premise) pour les projets sensibles, intègre nativement la CI/CD, et offre une gestion fine des permissions. C’est l’outil que nous privilégions pour nos projets de DevOps embarqué
  • GitHub : la plateforme la plus populaire au monde, idéale pour les projets open source et la collaboration avec des partenaires externes. Son écosystème d’intégrations (GitHub Actions, Copilot) est le plus riche du marché
  • Bitbucket : une alternative solide, bien intégrée avec les outils Atlassian (Jira, Confluence) si votre organisation les utilise déjà

Clients graphiques

Pour les membres de l’équipe qui préfèrent une interface visuelle :

  • GitKraken : interface moderne et intuitive, visualisation claire de l’arbre des branches, disponible sur Windows, macOS et Linux
  • Sourcetree : client gratuit d’Atlassian, complet et bien documenté, disponible sur Windows et macOS
  • VS Code : l’éditeur de code de Microsoft intègre un support Git natif. Pour les développeurs firmware qui utilisent déjà VS Code avec PlatformIO ou l’extension Zephyr, c’est la solution la plus naturelle

Bonnes pratiques pour démarrer

Voici les règles que nous appliquons systématiquement sur nos projets :

  • Un commit = une modification logique. Pas de commits « fourre-tout » qui mélangent correction de bug, ajout de fonctionnalité et nettoyage de code
  • Des messages de commit clairs. « Fix bug » ne dit rien. « Correction du timeout SPI en mode DMA sur STM32H7 » permet de comprendre le changement sans ouvrir le code
  • Ne jamais commiter de secrets. Mots de passe, clés API, certificats — ces éléments n’ont pas leur place dans Git. Utilisez un fichier .gitignore pour les exclure automatiquement
  • Brancher systématiquement. Même pour un « petit changement ». La branche main doit toujours rester dans un état fonctionnel
  • Revue de code obligatoire. Aucun merge dans main sans qu’au moins une personne ait relu les modifications

AESTECHNO — votre partenaire technique à Montpellier

Avec plus de 10 ans d’expérience en développement électronique et logiciel embarqué, nous accompagnons nos clients sur l’ensemble de la chaîne de développement — de la conception hardware à la mise en place des outils et processus qui garantissent la qualité et la traçabilité.

  • 10+ ans d’expertise en électronique et embarqué
  • Git, CI/CD et DevOps intégrés dans tous nos projets
  • Bureau d’études français basé à Montpellier

Structurez vos projets avec les bons outils

Un projet sans versioning, c’est un projet qui accumule de la dette technique invisible. Nous mettons en place Git, les workflows de collaboration et la CI/CD adaptés à votre contexte — que votre équipe soit novice ou expérimentée.

Contactez-nous pour en discuter

Questions fréquentes

Git est-il difficile à apprendre pour un non-développeur ?

Non, les concepts de base de Git — commit, branche, merge — s’apprennent en quelques heures avec un bon accompagnement. Les clients graphiques comme GitKraken ou Sourcetree rendent l’utilisation quotidienne accessible sans maîtriser la ligne de commande. L’essentiel est de comprendre les principes plutôt que de mémoriser des commandes. La plupart de nos clients sont opérationnels en une journée de formation.

Git fonctionne-t-il pour les fichiers de conception électronique (schémas, PCB) ?

Oui, Git peut versionner tout type de fichier, y compris les fichiers binaires de conception (KiCad, Altium, Eagle). La différence avec le code source est que Git ne peut pas afficher les modifications ligne par ligne pour les fichiers binaires — il conserve néanmoins l’historique complet et la capacité de rollback. KiCad propose des outils de comparaison visuelle de schémas intégrés à Git. Pour les fichiers très volumineux, l’extension Git LFS (Large File Storage) est recommandée.

Quelle est la différence entre Git, GitHub et GitLab ?

Git est l’outil de versioning lui-même — il fonctionne localement sur votre ordinateur. GitHub et GitLab sont des plateformes web qui hébergent des dépôts Git et ajoutent des fonctionnalités collaboratives : gestion des accès, revue de code, CI/CD, suivi de tickets. On peut utiliser Git sans GitHub ni GitLab, mais ces plateformes apportent une valeur considérable pour le travail en équipe. GitLab peut être hébergé en interne, ce qui est un avantage pour les projets industriels sensibles.

Comment Git aide-t-il pour la certification de produits électroniques ?

La traçabilité est un élément central des processus de certification (CE, RED, IEC 62443). Git fournit un historique complet, immuable et horodaté de chaque modification apportée au firmware et à la documentation. Les tags de release permettent de relier précisément une version certifiée au code source correspondant. En cas d’audit, cette traçabilité facilite la démonstration de conformité et la reproductibilité des builds. C’est un prérequis pour toute démarche qualité sérieuse.

Peut-on utiliser Git sur un projet déjà en cours ?

Absolument. L’initialisation d’un dépôt Git sur un projet existant est une opération simple qui ne modifie aucun fichier existant. Le premier commit capture l’état actuel du projet, et tous les changements futurs sont versionnés à partir de ce point. Il n’est jamais trop tard pour adopter Git — et plus tôt vous le faites, plus vous bénéficiez de la traçabilité. Nous recommandons de profiter de cette transition pour mettre en place un fichier .gitignore adapté et définir les conventions de l’équipe.

Git est-il gratuit ?

Oui, Git est un logiciel libre et gratuit (licence GPLv2). Les plateformes d’hébergement proposent des offres gratuites généreuses : GitHub offre des dépôts privés illimités, et GitLab Community Edition peut être auto-hébergé sans coût de licence. Les versions payantes ajoutent des fonctionnalités avancées (CI/CD plus puissant, gestion d’entreprise, support), mais une équipe peut parfaitement démarrer avec les offres gratuites.

Articles connexes