Débugue tes humanités Saison 2

Séance 07 - Git le retour

Usage réel, paramètres et configuration, gestion des conflits, merge requests, etc.

Chaire de recherche du Canada sur les écritures numériques — antoine.fauchie@umontreal.ca

Plan de la séance

  1. Les principes de Git
  2. Configurer Git
  3. Retour sur les commandes usuelles
  4. Conflits, forks et rebase

1. Les principes de Git #

  • suivre un projet
  • développements/évolutions non linéaires (branches)
  • historique général et particulier
  • système de gestion de versions distribué
  • complexité relative
  • logiciels/plateformes qui simplifient l’usage

1. Les principes de Git

Quelques définitions #

  • dépôt : ensemble des fichiers versionnés
  • commit : enregistrement des changements dans un dépôt
  • fork : divergence d’un projet, une copie qui va vivre sa propre vie (ou presque)
  • cloner : copier un projet chez soi pour pouvoir y contribuer
  • conflit : lorsque l’on tente de réunir voir de fusionner plusieurs versions d’un même projet

1. Les principes de Git

À retenir #

2. Configurer Git #

  • configuration générale : fonctionnement de Git pour tous les projets
  • configuration particulière : pour un projet
  • clés SSH ?…

2. Configurer Git

2.1. Configuration générale #

  • basique : un nom et une adresse
  • avancée : éditeur par défaut, branche par défaut
  • voir la configuration : git config --list
  • modifier la configuration, exemple : git config --global user.name "Antoine Fauchié"

2. Configurer Git

2.2. Configuration particulière #

  • par défaut : configuration générale qui s’applique
  • a minima : les branches disponibles en local et le dépôt distant
  • possible de spécifier

2. Configurer Git

2.3. Clés SSH ?… #

3. Retour sur les commandes usuelles #

  • git init : initialiser un dossier
  • git status : voir l’état du projet
  • git log : afficher l’historique de la branche actuelle
  • git add : ajouter un fichier dans l’index avant de commiter
  • git commit : déclarer des modifications
  • git branch : créer une nouvelle branche
  • git checkout : pour basculer sur une branche
  • git push : envoyer les modifications sur un dépôt distant
  • git fetch : récupérer les modifications d’un dépôt distant
  • git pull : récupérer les modifications d’un dépôt distant et les fusionner avec le dépôt local

3. Retour sur les commandes usuelles

Exercice 1 #

  1. créer un dossier : mkdir bac-a-sable
  2. aller dans ce dossier : cd bac-a-sable
  3. créer un fichier : echo "Mon texte" >fichier-01.txt
  4. ajouter le fichier dans l’index et commiter
  5. afficher l’historique

4. Conflits, forks et rebase #

  • un conflit : il faut choisir
  • forks : comment maintenir sa version à jour ?
  • rebase : les bonnes pratiques difficiles à mettre en place

4. Conflits, forks et rebase

Un conflit : choisir/arbitrer #

  • pour distinguer les portions : des signes typographiques sont utilisés
  • certains éditeurs de texte facilitent la visualisation des conflits
  • si le conflit n’est pas résolu : impossible de continuer

4. Conflits, forks et rebase

Exercice 2 : gestion d’un conflit #

Suite à l’exercice 1, nous allons créer plusieurs modifications :

  1. créer une nouvelle branche appelée modifs : git checkout -b modifs
  2. vous êtes désormais sur cette nouvelle branche
  3. modifier le fichier, par exemple : echo "Autre texte hop là" >fichier-01.txt
  4. enregistrer vos modifications dans Git : git commit -a -m "révision de la première ligne"
  5. retourner sur la branche principale : git checkout master (ou git checkout main selon votre configuration)
  6. effectuer une nouvelle modification : echo "Ceci est mon texte" >fichier-01.txt
  7. enregistrer vos modifications : git commit -a -m "réécriture"
  8. tenter de fusionner les deux branches : git merge modifs

Vous devez avoir un conflit !

4. Conflits, forks et rebase

forks : comment maintenir sa version à jour ? #

  1. créer un fork du projet sur votre GitLab Huma-Num
  2. cloner le dépôt sur votre ordinateur (dans un autre dossier que le projet précédent)
  3. ajouter l’indication du fork en local : git remote add upstream git@gitlab.huma-num.fr:antoinefauchie/bac-a-sable-2.git
  4. pour récupérer les modifications du dépôt d’origine : git fetch upstream 5 pour synchroniser ces modifications avec votre dépôt : git rebase upstream/master

4. Conflits, forks et rebase

rebase : les bonnes pratiques difficiles à mettre en place #

Un tutoriel complexe à explorer si vous êtes motivé·e :

https://git-rebase.io