$_
StemLegacy
Phase 4GitHub

#14 Collaborer

fetch, pull requests, rebase

git fetch -- Télécharger sans fusionner

La commande git fetch télécharge les dernières modifications du dépôt distant, mais sans les fusionner dans votre branche locale. Cela vous permet de voir ce qui a changé avant de décider quoi faire :

Télécharger les modifications
$ git fetch
remote: Enumerating objects: 3, done.
remote: Total 3 (delta 1), reused 3 (delta 1)
From https://github.com/alice/mon-projet
   a1b2c3d..d4e5f6g  main -> origin/main

Après un git fetch, les modifications sont dans origin/main mais votre branche main locale n'a pas changé.

fetch + merge = pull

Pour intégrer les modifications téléchargées, utilisez git merge :

Fusionner après fetch
$ git fetch
$ git merge origin/main
Updating a1b2c3d..d4e5f6g
Fast-forward
 README.md | 5 +++++
 1 file changed, 5 insertions(+)

En fait, git pull fait exactement ces deux étapes en une seule commande. Utiliser git fetch séparément est utile quand vous voulez inspecter les changements avant de les fusionner.

Les Pull Requests (PR)

Une Pull Request (ou PR) est une fonctionnalité de GitHub qui permet de proposer des modifications à un projet. Le workflow typique est le suivant :

Workflow d'une Pull Request
# 1. Créer une branche pour votre travail
$ git checkout -b feature

# 2. Faire des commits
$ git add .
$ git commit -m "Add feature X"

# 3. Pousser la branche sur GitHub
$ git push -u origin feature

# 4. Créer la PR sur GitHub (ou avec gh pr create)
# 5. Revue de code par les autres développeurs
# 6. Fusionner la PR dans main

Les PR permettent une revue de code : vos collègues peuvent commenter, suggérer des modifications et approuver avant que le code ne soit fusionné dans la branche principale.

git rebase -- Réappliquer ses commits

La commande git rebase main prend vos commits et les rejoue par-dessus la branche main. Cela donne un historique linéaire et plus propre :

Rebaser une branche
$ git rebase main
Successfully rebased and updated refs/heads/feature.
First, rewinding head to replay your work on top of it...
Applying: add feature X

Après le rebase, votre branche semble partir du dernier commit de main :

Historique après rebase
$ git log --oneline
d4e5f6g (HEAD -> feature) add feature X
a1b2c3d (origin/main, main) Initial commit

Rebase vs Merge

Les deux permettent d'intégrer des modifications, mais avec des approches différentes :

  • Merge : crée un commit de fusion. Plus sûr, conserve l'historique complet tel quel.
  • Rebase : réécrit l'historique pour le rendre linéaire. Plus propre, mais à utiliser avec précaution sur les branches partagées.

Règle simple : utilisez rebase pour mettre à jour votre branche de travail locale, et merge pour intégrer dans main.

Récapitulatif

Résumé
git fetch                  # Télécharger sans fusionner
git merge origin/main      # Fusionner les modifications distantes
git pull                   # fetch + merge en une commande
git rebase main            # Rejouer ses commits sur main

# Workflow PR :
# branche → push → créer PR → revue → merge

À vous de jouer

Essayez les commandes de collaboration dans le terminal ci-dessous. Commencez par git fetch pour récupérer les modifications distantes.

terminal — bash
user@stemlegacy:~/mon-projet$