Séquence 07 · Local ↔︎ distant

Pourquoi Franck ne voit rien

La scène se joue tous les jours dans tous les services qui débutent avec Git. Jouons-la ensemble — puis ne la revivons plus jamais.

La scène

Marie termine une belle amélioration de l’indicateur. Consciencieuse, elle enregistre :

Marie · 14 h 32

git commit -m "Ajoute la ventilation par sexe"

« Voilà, c’est enregistré. Franck peut regarder. »

Franck · 14 h 33

Ouvre le projet sur GitLab. Actualise. Actualise encore.

« Euh… je ne vois rien de nouveau. Tu es sûre d’avoir enregistré ? »

Marie a pourtant tout bien fait. Alors, pourquoi Franck ne voit-il rien ? Faites-le vous-même, la réponse est dans la manipulation :

Poste de Marie — dépôt local
51bd882 Version stable avant modification
GitLab — ce que voit Franck
51bd882 Version stable avant modification

Marie vient de finir sa modification. À vous : commencez par git commit.

Commit ≠ push. git commit colle la photo dans votre album, sur votre poste — et s’arrête là. Tant que vous n’avez pas fait git push, personne d’autre ne peut la voir. Enregistrer, c’est pour vous ; pousser, c’est pour les autres.

Les trois commandes du voyage

La carte complète, désormais. Trois commandes font circuler les commits entre votre poste et GitLab :

GitLab — dépôt commun L'album de référence de l'équipe.
push ↑ · fetch / pull ↓
Votre poste — dépôt local Votre album : celui où git commit range les photos.

git push — envoyer. Vos nouveaux commits partent vers GitLab. C’est le geste de partage : après un push, l’équipe voit votre travail.

git push
Énumération des objets: 5, fait.
Écriture des objets: 100% (3/3), 412 octets.
Vers gitlab.exemple.fr:etudes/etude-population.git
   51bd882..c47d1e9  main -> main

git fetch — se renseigner. Git demande à GitLab « quoi de neuf ? » et télécharge les nouveaux commits des collègues sans toucher à vos fichiers. Vous pouvez regarder ce qui arrive avant de l’intégrer. C’est la commande prudente, celle qui ne change jamais rien à votre travail en cours.

git pull — récupérer. fetch + intégration : les nouveaux commits de l’équipe sont téléchargés et appliqués à votre copie. C’est le geste du matin : on démarre sa journée en se mettant au niveau du dépôt commun.

git pull
Mise à jour 51bd882..e02ab55
 traitement.py  | 14 ++++++++------
 rapport.qmd    |  3 ++-
 2 fichiers modifiés, 11 insertions(+), 7 suppressions(-)

Lecture : pendant votre absence, l’équipe a modifié traitement.py et rapport.qmd ; votre copie locale vient de rattraper le dépôt commun.

Le rythme d’une journée

La routine qui deviendra automatique — remarquez la symétrie : on tire le matin, on pousse le soir :

  1. Le matingit pull : je récupère ce que l’équipe a poussé depuis hier.
  2. Dans la journée — je travaille normalement : modifications, git status, git diff, git add, git commit… autant de fois que nécessaire, tout est local et rapide.
  3. Avant de partir (ou dès qu’un travail est bon à partager) — git push : mes commits du jour rejoignent le dépôt commun.

La synchronisation demande un dépôt distant — si votre formateur en a préparé un, c’est le moment : faites un commit dans le projet partagé, constatez sur GitLab (dans le navigateur) qu’il n’apparaît pas, puis git push et actualisez : il est là, avec votre nom et votre message. Sinon, gardez cette manipulation pour la mission finale.

Si git push est refusé avec un message du type « le distant contient du travail que vous n’avez pas en local », c’est qu’un collègue a poussé avant vous. Rien de grave, c’est même le fonctionnement normal : faites git pull pour récupérer son travail, vérifiez que tout va bien, puis repoussez. Règle d’or : on tire avant de pousser.

Il est 9 h, vous reprenez l'étude commune après trois jours de congés. Première commande ?

Pour aller plus loin — que fait exactement git fetch de plus prudent que pull ?

git fetch range les commits téléchargés dans une copie miroir du distant (visible sous le nom origin/main) sans toucher ni à vos fichiers ni à votre main. Vous pouvez alors comparer tranquillement : git log main..origin/main --oneline liste ce que l’équipe a fait et que vous n’avez pas encore intégré. Quand vous êtes prêt, git pull fait l’intégration. Avec l’habitude, beaucoup gardent pull au quotidien et sortent fetch quand ils veulent inspecter avant d’intégrer — par exemple au retour de congés.

Vous savez tout partager. Voyons ce que cela change quand un collègue doit vous remplacer.

Séquence 08 — Collaborer