Guide Git

De Polybot Grenoble
Sauter à la navigation Sauter à la recherche

Présentation des outils

On va utiliser un certain nombre de termes anglais car c'est ceux qui sont utilisés partout, et l'informatique se fait en anglais.

Git est un logiciel de gestion de versions décentralisé, c'est-à-dire que l'on peut travailler en local. Il permet, en autres, de sauvegarder chaque modification d'un programme. On peut également partager (push) nos modifications vers un serveur (GitLab pour nous).

GitLab est une plateforme qui permet de sauvegarder et de visualiser un repository git. Il propose aussi un certain nombre de services comme par exemple un gestionnaire de bug (issues), de la code review ou de l'intégration continue (CI).

Git peut être utiliser en ligne de commande ou bien via une interface graphique. Pour ce tutoriel, nous allons l'utiliser via sublime-merge. C'est un outil qui permet de se passer de la ligne de commande et de simplifier la gestion d'un repo git.

Installation

Installation de git

Sur ubuntu ou debian, il suffit de faire cette commande dans un terminal sudo apt install git.

Pour les autres plateformes :

  1. Accéder à https://git-scm.com/download/
  2. Télecharger la dernière version du logiciel pour votre plateforme.
  3. Pour Windows, en faisant clique droit dans un dossier vous devriez voir apparaître "Git GUI Here" et "Git Bash Here".

Installation de sublime-merge

Voir sur le site https://www.sublimemerge.com/ .

Configuration

Ajout d'une clé SSH

GitLab autorise la communication avec ses serveurs via des clés SSH. En gros, cela remplace le mot de passe, et ça fournit d'autres avantages. Cette étape n'est pas obligatoire, mais elle est conseillé.

  1. Pour générer une clé SSH suivez les indications ici.
  2. Puis, sur GitLab, cliquer sur l'avatar en haut à droite, puis sur Settings.
  3. Cliquer sur "SSH Keys" puis coller le contenu de la clé publique générée avant (le fichier terminant par .pub).
  4. Valider en cliquant sur "Add key".

Organisation des repos de Polybot

Les repository de PolyBot se trouve à cette adresse : https://gitlab.com/polybot-grenoble . Si vous n'y avez pas accès, vous pouvez demander qu'on vous en donne un à Charles Blanchard, Errikos Messara ou Corentin Musard.

Organisation des repository de Polybot

Chaque projet est indépendant, vous pouvez travailler sur un ou plusieurs projet en même temps.

Utilisation pratique

Guide video

Cette vidéo montre :

  • le fonctionnement de GitLab
  • comment faire un fork
  • comment clone un repo grâce à sublime-merge
  • une visualisation d'un projet git avec des commits et des branches
  • le concept de branche locale et de branche distante
  • la création d'une branche local à partir d'une branche distante
  • la création d'un commit
  • comment push des commit sur la branche distante
  • la création d'une merge request
  • la création d'une nouvelle branche
  • le changement de branche
  • la différence d'un fork à un clone direct et l'intéret de le faire
  • comment récuperer (fetch) les modifications du serveur distant

https://tube.nocturlab.fr/videos/watch/2055a0cd-1b93-4e8d-ab41-a41cc1c0ccbe

La commande stash

Lorsque l'on change de branche, le code visible du dossier va être également modifier pour correspondre à celui de la branche.

Si vous aviez des modifications en cours, git va vous dire cela :

error: Your local changes to the following files would be overwritten by checkout:
    .gitignore
Please commit your changes or stash them before you switch branches.
Aborting

Pour changer de branche vous avez donc 3 options :

  • Annuler chacune de vos modifications (ça peut être fait facilement via sublime-merge)
  • Enregistrer vos modfications dans un commit sur la branche actuelle
  • Utiliser la commande stash pour "planquer" vos modfications dans un dossier interne de git. Vous pourrez ensuite changer de branche et travailler dessus.

Si vous vous êtes trompé de branche et que vous voulez déplacer les modifications en cours vers une autre branche :

  1. Faire la commande stash pour enregistrer vos modifications et pour pouvoir changer de branche
  2. Changer la branche active vers celle que vous désirez
  3. Faire la commande stash pop, qui permet d'appliquer toutes les modifications précédement enregistré
  4. Si cela fonctionne, c'est fini, sinon cela peut créer un conflit. Voir la section sur les conflits pour plus de détail.

Les conflits

[todo]

Le fichier .gitignore

Le fichier .gitignore situé à la racine du projet est particulier. Il permet de lister les fichiers qui seront ignorés par git. Il ne les prendra pas en compte pour lors de leur modification dans le projet.

Exemple de contenu du fichier .gitignore :

Debug/
*.o
*.tmp

Le dossier Debug et tout son contenu est ignoré. Les fichiers terminants par .o et par .tmp seront également ignorés.

L'utilisation principale de ce fichier est d'ignorer les fichiers temporaires, les fichiers de build et les fichiers générés par les IDE.

Pour aller plus loin

Ajout d'une clé PGP

Ce n'est pas obligatoire mais c'est une forme d'authentification en plus et certains projets (comme par exemple le noyau linux) l'oblige.

Une clé PGP (Pretty Good Privacy) permet de signer son travail.

Tout le monde peut changer son nom lors du commit et peut donc usurper votre identité [1]. PGP empêche cela, en signant le commit. Voici une vidéo explicant le fonctionnement général de PGP : https://www.youtube.com/watch?v=GSIDS_lvRv4 .

  1. Pour créer et mettre en place votre clé PGP, suivez la partie Introduction ici.
  2. Pour l'ajouter sur GitLab, aller dans les paramètres puis dans "GPG Keys".
  3. Ajouter la clé.
  4. Pour signer chaque commit automatiquement faire : git config --global commit.gpgsign true

Maintenant, lorsque vous faites un commit, vous pouvez voir la mention Verified sur le commit signé comme sur l'image ci-dessous. Exemple d'un commit signé et d'un commit non signé

Utilisation des sous-modules

[todo] [pas urgent car pas utilisé actuellement]

Liens et ressources