Quelle est la différence entre 'git pull&#39 ; et 'git fetch' ?

Note du modérateur : Étant donné que soixante-sept réponses ont déjà été postées à cette question (certaines ont été supprimées), demandez-vous si vous apportez quelque chose de nouveau avant d'en poster une autre.

Quelles sont les différences entre git pull et git fetch ?

Solution

Dans les termes les plus simples, git pull fait un git fetch suivi d'un git merge.

Vous pouvez faire un git fetch à tout moment pour mettre à jour vos branches de suivi à distance sous refs/remotes//.

Cette opération ne modifie jamais aucune de vos propres branches locales sous refs/heads, et est sûre à faire sans modifier votre copie de travail. J'ai même entendu parler de personnes qui exécutent git fetch périodiquement dans une tâche cron en arrière-plan (bien que je ne recommande pas de faire cela).

Un git pull est ce que vous feriez pour mettre à jour une branche locale avec sa version distante, tout en mettant également à jour vos autres branches de suivi à distance.

Documentation Git - [git pull][1] :

Dans son mode par défaut, git pull est un raccourci de git fetch suivi de git merge FETCH_HEAD.

[1] : http://git-scm.com/docs/git-pull

Commentaires (40)

Un cas d'utilisation de git fetch est que ce qui suit vous indiquera tous les changements dans la branche distante depuis votre dernier pull... ainsi vous pouvez vérifier avant de faire un pull réel, qui pourrait changer des fichiers dans votre branche courante et votre copie de travail.

git fetch
git diff ...origin

Voir : https://git-scm.com/docs/git-diff concernant la syntaxe à double et triple points dans la commande diff.

Commentaires (5)
git-pull - Récupérer depuis et fusionner avec un autre dépôt ou une branche locale
SYNOPSIS

git pull ... DESCRIPTION

Exécute git-fetch avec les paramètres donnés, et appelle git-merge pour fusionner la ou les tête(s) récupérée(s) dans la branche courante. Avec --rebase, appelle git-rebase au lieu de git-merge.

Notez que vous pouvez utiliser . (répertoire actuel) en tant que pour tirer du dépôt local - ceci est utile pour fusionner les branches locales dans la branche courante.

Notez également que les options destinées à git-pull lui-même et à git-merge sous-jacent doivent être données avant les options destinées à git-fetch.

Vous tireriez si vous voulez que les historiques soient fusionnés, vous récupéreriez si vous voulez juste " le codez " comme une personne a étiqueté certains articles par ici.

Commentaires (3)