Git pull ou git fetch, quelle différence change vraiment votre façon de travailler ?

On voit souvent ces deux commandes comme des cousines tellement proches qu’on finit par les confondre. Dans les faits, elles n’ont pas le même effet psychologique sur votre journée. git fetch vous montre ce qui a bougé sans toucher à votre branche courante. git pull ramène les changements et essaye tout de suite de les intégrer. Dit comme ça, la différence a l’air minime. En réalité, elle change votre niveau de contrôle.

Le problème, ce n’est pas la syntaxe. Le problème, c’est le moment où vous découvrez qu’un collègue a poussé quelque chose qui entre en collision avec ce que vous faisiez depuis deux heures. Si vous utilisez Git tous les jours, ce détail finit par compter plus que la définition officielle.

Pourquoi ces deux commandes sont si souvent mélangées

La confusion vient d’un raccourci très humain. On veut simplement récupérer la dernière version du dépôt. Comme les deux commandes parlent au serveur et ramènent des nouveautés, beaucoup de développeurs se disent qu’elles font la même chose avec un emballage différent. Ce n’est pas faux, mais ce n’est pas suffisant pour travailler proprement.

Avec git fetch, Git met à jour vos références distantes. En clair, il télécharge l’état récent de origin/main, origin/dev ou d’autres branches distantes, mais il ne mélange rien dans votre branche locale. Vous pouvez regarder, comparer, respirer et décider.

Avec git pull, Git fait d’abord ce téléchargement, puis enchaîne avec une intégration. Selon votre configuration, ce sera souvent un merge, parfois un rebase. C’est pratique quand vous savez exactement ce que vous attendez. C’est moins confortable quand vous préférez inspecter avant de laisser Git toucher à votre branche.

Pourquoi git fetch est souvent le meilleur réflexe

J’aime bien git fetch pour une raison simple. Il n’impose rien. Il me laisse voir le delta avant de le subir. Après un fetch, je peux lancer un git log HEAD..origin/main, un git diff main origin/main ou juste vérifier si la branche distante a avancé plus que prévu.

Cette petite étape évite beaucoup de friction. Quand on travaille sur un dépôt un peu vivant, avec plusieurs merges dans la journée, faire un fetch revient à jeter un coup d’oeil avant d’ouvrir la porte. Vous savez si la maison est calme ou si quelqu’un a déplacé tous les meubles.

Si vous travaillez aussi avec des forks, cette habitude devient encore plus utile. Le jour où vous devez resynchroniser votre copie avec le dépôt d’origine, le mécanisme est le même. J’en parle plus en détail ici : quand utiliser un fork Git plutôt qu’un simple clone. Comprendre fetch dans ce contexte évite de bricoler à l’aveugle avec un remote upstream.

Quand git pull reste le bon outil

Il ne faut pas diaboliser git pull. Quand vous êtes sur une branche locale très simple, que vous savez qu’elle suit une branche distante précise et que vous voulez juste vous remettre à jour rapidement, c’est efficace. Beaucoup de gens commencent leur journée avec un pull sur main et ça se passe très bien.

Le vrai piège apparaît quand on lance git pull comme un réflexe nerveux au milieu d’un travail en cours. C’est là qu’on se retrouve avec un merge surprise, un conflit qu’on n’avait pas anticipé, ou pire, une branche locale modifiée qu’on comprend de moins en moins. Le souci n’est pas la commande. Le souci, c’est le manque de contexte au moment où on l’exécute.

Si votre équipe alterne entre plusieurs tâches, correctifs et revues, le besoin de contrôle devient encore plus visible. Dans ce cas, travailler avec des répertoires séparés peut faire gagner un temps fou. C’est exactement là que Git worktree devient très pratique quand une branche ne suffit plus, parce qu’on évite les allers-retours brouillons entre des états locaux différents.

Une routine simple pour ne plus subir

Une routine saine peut rester très légère. Sur une branche importante, commencez par un fetch. Regardez ce qui a changé. Si tout est propre et que vous voulez intégrer, choisissez ensuite votre geste, merge ou rebase selon vos habitudes. Cette séquence prend à peine plus de temps qu’un pull direct, mais elle vous rend beaucoup plus lucide.

Pour une branche personnelle courte, un pull peut suffire. Pour une branche exposée, surtout si d’autres personnes poussent régulièrement, fetch puis inspection reste souvent la voie la plus calme. Vous n’avez pas besoin d’un cérémonial compliqué. Vous avez juste besoin d’une pause de cinq secondes avant de demander à Git de combiner des histoires qui n’ont peut-être pas avancé au même rythme.

Au fond, git fetch répond à la question « qu’est-ce qui a changé là-bas ? ». git pull répond à « mets-moi à jour maintenant ». Quand on formule les choses comme ça, on choisit beaucoup mieux. Et dès qu’on choisit mieux, Git paraît soudain beaucoup moins capricieux.

Retour en haut