#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 :
$ 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/mainAprè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 :
$ 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 :
# 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 mainLes 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 :
$ git rebase main
Successfully rebased and updated refs/heads/feature.
First, rewinding head to replay your work on top of it...
Applying: add feature XAprès le rebase, votre branche semble partir du dernier commit de main :
$ git log --oneline
d4e5f6g (HEAD -> feature) add feature X
a1b2c3d (origin/main, main) Initial commitRebase 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
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.