Original article: Git Fetch vs Pull: What's the Difference Between the Git Fetch and Git Pull Commands?
Git pull
et fetch
sont deux commandes régulièrement employées par les utilisateurs de Git. Voyons la différence entre ces deux commandes.
Pour expliquer le contexte, il faut se rappeler que nous travaillons probablement sur un dépôt clone. Qu'est-ce qu'un clone? C'est juste la copie d'un autre dépôt. Il s'agit simplement d'obtenir votre propre copie du code source de quelqu'un d'autre.
Ceci étant dit, pour garder votre clone à jour avec les changements qui ont été appliqués à l'original, vous aurez besoin d'apporter ces changements à votre clone.
C'est là que fetch
et pull
entrent en jeu.
git fetch
est la commande qui dit à votre Git local de retrouver l'information de la dernière meta-donnée provenant de l'original (mais elle ne fait aucun transfert de fichier. Cela ressemble plus à une simple vérification pour voir s'il y a des changements disponibles).
git pull
, d'un autre coté, fait la même chose ET rapatrie (copie) ces changements à partir du dépôt distant.
Par exemple:
git pull origin ankur bugfix
L'idée est de garder à l'esprit qu'il y a en général trois copies du projet sur votre poste de travail.
- Une copie est votre propre dépôt avec votre propre historique de commit (Ceux qui ont déjà été sauvegardés, pour ainsi dire).
- La seconde copie est votre copie de travail où vous éditez et construisez (pas encore validé dans votre dépôt).
- La troisième copie est votre copie locale "cachée" d'un dépôt distant (probablement l'original à partir duquel vous avez cloné le votre).
Vous pouvez utiliser git fetch
pour connaitre les changements effectués dans le dépôt/branche distant depuis votre dernier "pull". C'est pratique pour autoriser la vérification avant d'effectuer un "pull", car cela pourrait changer les fichiers dans votre branche actuelle et dans votre copie de travail (et éventuellement perdre vos changements, etc...).
git fetch
git diff ...origin