Git - rapidement

Git, c'est bien !

Git est un système de gestion de versions. Il permet de sauvegarder et de récupérer une version passée d'un fichier ou d'un projet complet. Git permet également de partager une modification.

Le but de ce document n'est pas d'être la bible de git. Elle existe déjà, elle est là. Le but est d'être un point d'entrée rapide sur le sujet, permettant au lecteur de trouver les points qu'il souhaite approfondir.

La structure de git

Git est organisé en dépôt. Chaque dépôt va contenir un projet avec son historique et les différentes évolutions en cours de développement.

Lorsque vous avez un dépôt pour travailler sur votre ordinateur, vous avez de visible le répertoire de travail. Dans ce répertoire, se cache un sous-répertoire nommé .git. Le répertoire .git contient toutes les informations de votre projet, tous ses fichiers et leur historique. Tant que vous ne détruisez pas - ou n’altérez pas - ce répertoire, vous pourrez récupérer votre projet.

Dans le répertoire de travail, chaque fichier peut avoir 3 états :

  • Modifié : Cette version du fichier n'existe que dans votre répertoire de travail.
  • Indexé : Le fichier a été ajouté à la zone d'index. Il est marqué pour faire partie de la prochaine version que vous créerez.
  • Validé : La version de ce fichier fait partie de l'historique du projet.

À la fois pour sauvegarder son projet et pour travailler en équipe, il est courant d'avoir plusieurs dépôts d'un même projet. Un dépôt sera sur le PC de la personne qui travaille sur le projet, un second dépôt sur une _forge logicielle_ telle que : * Forjego * Gitea * Gitlab * Github

Principe de base de fonctionnement

  • 0) Installer git
  • 1) Créer un dépôt ou récupérer un dépôt existant
  • 2) Modifier le projet
  • 3a) Ajouter les fichiers à la zone d'index
  • 3b) Valider les modifications

Dans la pratique, les commandes de git, dans le terminal, sont assez simples à mémoriser et à utiliser. Cependant, presque chaque IDE dispose d'une gestion de git, que ce soit nativement ou par l'intermédiaire d'un plug-in.

Installer Git

Sous Linux, prenez la version dans votre distribution. Sur les dérivées de Debian :

apt get install git

Sous Windows, installez Git for windows

Sous Mac, lancez 'git' dans un terminal, s'il n'est pas installé, il vous demandera de le faire.

Créer un dépôt

À partir du répertoire d'un projet

git init

À partir d'un dépôt existant

Pour cloner un dépôt :

git clone <adresse du dépôt>

État du dépôt

git status

La commande indique quelle branche est active, les fichiers modifiés, ceux ajoutés à l'index, ceux qui ne sont pas suivis.

Ajouter un fichier à l'index

git add <fichier>

Valider les modifications

git commit

La commande “git commit” valide les modifications présente dans l'index.

Ceux qui sont pressés utiliseront la commande :

git commit -a -m "<Description des modifications>"

Cette commande ajoute tous les fichiers modifiés à l'index et valide les modifications. Attention, cette commande ne tiendra pas compte des nouveaux fichiers.

Identification des versions

Les tags

Les tags, ou étiquettes en français, permettent d'identifier une version précise, statique, du projet. C'est le mécanisme à utiliser lors d'une livraison du logiciel ou pour identifier le code utilisé pour une opération spécifique - telle que l'homologation.

Les branches

Comme les tags, les branches permettent d'identifier une version du projet. Mais cette version est dynamique. Si la branche est active, l'ajout d'une modification fait évoluer la branche. Dans un projet, il existe généralement une branche principale, main ou master. Les gros projets s'organisent en ayant une branche par fonctionnalité. Lorsque la fonctionnalité est prête, celle-ci est fusionnée avec la branche principale.

Sur un projet comme tel qu'un robot, deux ou trois branches sont suffisantes :

  • La branche principale, contient le code testé et validé.
  • La branche de test, contient le code qui a pu être testé.
  • la branche de développement, contient le code non testé, pour ceux qui codent beaucoup avant de tester.

Les deux dernières branches pouvant n'en être qu'une…

L'utilisation d'une branche spécifique pour un développement se justifie lorsque ce développement est long et où le besoin de modifier le code “qui marche” peut se faire sentir avant que le développement soit terminé.

Dans le cadre de la coupe, vous développez une nouvelle stratégie, branche strat-v2. Vous n'êtes pas sûr que cette stratégie soit prête pour votre prochain match. Vous créez une branche pour votre nouvelle stratégie. En attendant, vous analysez votre précédent match et trouvez des corrections à apporter à la vieille stratégique. Vous pouvez éditer votre branche principale et continuer à travailler sur votre stratégie v2 en parallèle.

Que suivre avec Git et que ne pas suivre avec Git

A suivre avec Git

  • Votre code
  • Votre système de compilation (Makefile, cmake) si vous le personnalisez

A ne pas suivre avec Git

  • Les fichiers temporaires - tels que les sauvegardes automatiques de votre éditeur de texte
  • Les fichiers intermédiaires de compilation

Pour éviter que git vous signale encore et encore ces fichiers comme non-suivis, créez un fichier .gitignore dans lequel vous indiquerez la liste des fichiers et répertoires à ignorer. Plus d'information ici.

Les bonnes pratiques

Voici quelques bonnes pratiques dans le cadre d'un petit projet.

  • Un commit toutes les deux heures - surtout la nuit
  • Envoyer tous les jours le code sur un dépôt distant
  • Au moins deux branches sur le dépôt local : une avec le code qui marche, une sur laquelle vous travaillez

Ressources externe