Git - 3 - Les dépôts distants

Git c’est avant tout le partage, la communion entre les gens et la nature, les oiseaux qui gazouillent tout ça tout ça. Il nous faut malgré tout passer par des services de dépôt distant qui présentent heureusement de belles interfaces web (ce n’est pas parce qu’on est de gauche qu’on doit se l’interdire). Etudions un de ces outils : Gitlab.

Le repo distant

git push, git pull

Vous travaillez actuellement seulement avec un repo local. Pour partager votre travail, vous pouvez utiliser un repo distant. Un repo distant est une copie du repo local (ou inversement). Voyons les comme des repos mirroirs. Les historiques sont conservés des deux côtés. Cependant ce sera plus généralement le repo distant qui sera la référence.

A chaque branche locale correspond une branche mirroir dans le repo distant. La synchronisation n’est cependant pas automatique.

local distant
main origin/main
topic origin/topic

Etant donné que la branche mirroir est une branche, on pourrait tout à fait utiliser git merge pour faire la synchro. Heureusement il existe des commandes spécifiques pour cela : git push et git pull.

Gitlab et Github sont des solutions qui permettent d’héberger les repos distants.

cone TP Créer un projet sur Gitlab et y déposer des données

Créons un projet en ligne

  1. se connecter à https://gitlab.com
  2. à côté de son icône de profil, cliquer sur + > New project/repository
  3. Choisir Blank project
  4. Remplir les champs comme suit :
    • Project name : test-project
    • Project URL : descendre tout en bas de la liste et choisir son user
    • Laisser les autres champs
  5. Vous arrivez sur une page avec une vision générale de votre nouveau projet.
    • Notez que le contenu du fichier README.md, écrit en markdown, est présenté comme page d’accueil. C’est le fichier utilisé par convention comme fichier d’accueil sur Gitlab et Github

Récupérons le projet localement :

  1. Cliquer sur Code > Clone with HTTPS
  2. Exécuter les commandes suivantes
git clone [url du projet]
git switch -c test
echo "bonjour" > toto.txt
git add toto.txt && git commit -m "bonjour"
git push

git pull
 ┌────────────┐┌────────────┐┌──────────┐┌───────────┐
 │Working Tree││Staging Area││Local Repo││Remote Repo│
 └─────┬──────┘└─────┬──────┘└────┬─────┘└─────┬─────┘
       │             │            │            │      
       │   git add   │            │            │      
       │────────────>│            │            │      
       │             │            │            │      
       │             │ git commit │            │      
       │             │───────────>│            │      
       │             │            │            │      
       │             │            │  git push  │      
       │             │            │───────────>│      
       │             │            │            │      
       │             │            │  git pull  │      
       │             │            │<───────────│      
       │             │            │            │      
       │       git checkout       │            │      
       │<─────────────────────────│            │      
       │             │            │            │      
       │        git merge         │            │      
       │<─────────────────────────│            │      

Remote repo : 4ème zone de référencement des fichiers

git push et git pull permettent de synchroniser le repo local .git et le repo distant test-project.git

  1. Se rendre de nouveau sur le projet et sur la branche test. Voir les modifications

Les Merge Requests

Gitlab est le lieu du travail en commun et de l’échange. Toutes les actions techniques qui sont effectuées dans Gitlab peuvent tout à fait l’être localement. Gitlab rajoute des fonctionnalités pour la discussion et l’annotation, les tickets de fonctionnalité, les rapports de bug, etc.

Gitlab est comme un Parlement (je suis pas peu fier de cette analogie):

  • les repos qu’il héberge sont des codes de lois
  • les développeurs des parlementaires
  • les merge request des propositions de lois soumises à l’approbation pour intégrer le texte de référence.
  • les annotations des amendements
  • un ticket est une demande d’un acteur sur un sujet

Ici nous allons voir la Merge Request qui est une des fonctionnalités les plus utilisées de Gitlab (Pull Request sur Github).

Les Merge requests sont des demandes de merge d’une branche dans une autre.

cone TP Créer un projet collaboratif et faire des merge requests

  1. Une personne se rend sur le projet la-fontaine et le fork dans son propre espace
  2. Ajouter les droits aux autres membres de l’Assemblée
  3. Tout le monde clone le projet
  4. Chacun crée sa branche
  5. Chacun ouvre le fichier corbeau-vs-renard.md et chacun change une ligne (une personne la première ligne, une autre celle du milieu, et une troisième la dernière)
  6. Chacun pousse ses modifs
  7. Chacun se rend sur le projet et crée une merge request depuis sa branche vers la branche main en mettant en reviewers les collègues
  8. Après vérifications, chacun valide les merge request des autres
  9. Chacun fait le merge de la merge request de quelqu’un d’autre
  10. En local, chacun revient sur son repo, revient sur la branche main et récupère la modif du repo distant.
  11. Chacun vérifie que le fichier a bien été modifié.

Bonus:
Vous pouvez ramener les modifs de la branche main dans votre branche pour continuer le développement dans votre branche sans avoir à en créer une autre.

  1. revenir sur sa branche
  2. git merge main

La suite

La suite ici : Git - 4 - Bons à savoir

Ressources