Différences entre versions de « Guide Git »

De Polybot Grenoble
Sauter à la navigation Sauter à la recherche
(Ajout de l'utilisation pratique de git, gitlab et sublime-merge)
Ligne 44 : Ligne 44 :
  
 
Guide vidéo : https://tube.nocturlab.fr/videos/watch/2055a0cd-1b93-4e8d-ab41-a41cc1c0ccbe
 
Guide vidéo : https://tube.nocturlab.fr/videos/watch/2055a0cd-1b93-4e8d-ab41-a41cc1c0ccbe
 +
 +
Rajout d'informations en plus de la vidéo :
 +
 +
== 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 :
 +
<nowiki>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</nowiki>
 +
 +
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 <code>stash</code> 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 :
 +
# Faire la commande <code>stash</code> pour enregistrer vos modifications et pour pouvoir changer de branche
 +
# Changer la branche active vers celle que vous désirez
 +
# Faire la commande <code>stash pop</code>, qui permet d'appliquer toutes les modifications précédement enregistré
 +
# Si cela fonctionne, c'est fini, sinon cela peut créer un '''conflit'''. Voir la section sur les conflits pour plus de détail.
  
 
= Pour aller plus loin =
 
= Pour aller plus loin =

Version du 2 novembre 2020 à 00:12

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. 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 : apt install git

Pour les autres plateformes :

  • Accéder à https://git-scm.com/download/
  • Télecharger la dernière version du logiciel pour votre plateforme.
  • 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.

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

Comment fonctionne git

Git permet, en autres, de sauvegarder chaque modification d'un programme, chaque modification est appelée commit. Un fork est une copie d'un repo. Cela permet de modifier/tester/bidouiller un projet sans risquer d'affecter le code original.

[todo]

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 vidéo : https://tube.nocturlab.fr/videos/watch/2055a0cd-1b93-4e8d-ab41-a41cc1c0ccbe

Rajout d'informations en plus de la vidéo :

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.

Pour aller plus loin

Ajout d'une clé PGP

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 .

  • Pour créer et mettre en place votre clé PGP, suivez la partie Introduction ici.
  • Pour l'ajouter sur GitLab, aller dans les paramètres puis dans "GPG Keys".
  • Ajouter la clé.
  • 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]