Maison >outils de développement >git >La différence entre 'git fetch' et 'git pull'
Git fetch et git pull peuvent tous deux mettre à jour le référentiel distant vers le référentiel local. Alors, quelles sont les différences entre eux. Plusieurs concepts doivent être mentionnés pour clarifier ce problème.
FETCH_HEAD : est un lien de version, enregistré dans un fichier local, pointant vers la version finale de la branche qui a été supprimée de l'entrepôt distant.
commit-id : Une fois chaque travail local terminé, une opération git commit sera effectuée pour enregistrer le travail en cours dans le dépôt local. À ce moment, un commit-. id sera généré, qui est un numéro de série qui identifie de manière unique une version. Après avoir utilisé git push, ce numéro de série sera également synchronisé avec l'entrepôt distant.
Avec les concepts ci-dessus, parlons de git fetch
git fetch : Cela mettra à jour le dernier commit-id des branches contenues dans tous les référentiels distants dans git remote . Enregistrez-le dans le fichier .git/FETCH_HEAD
La façon dont git fetch met à jour l'entrepôt distant est la suivante :
git fetch origin master:tmp //在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支 git diff tmp //来比较本地代码与刚刚从远程下载下来的代码的区别 git merge tmp //合并temp分支到本地的master分支 git branch -d temp //如果不想保留temp分支 可以用这步删除
(1) Si vous utilisez directement git fetch, les étapes sont les suivantes :
Créez et mettez à jour des succursales distantes locales. Autrement dit, créez et mettez à jour la branche origin/xxx, et extrayez le code vers la branche origin/xxx.
Définissez la correspondance branche-origine/branche actuelle dans FETCH_HEAD Si vous git merge directement à ce moment-là, origin/abc peut être fusionné dans la branche abc.
(2) git fetch origin
spécifiez simplement manuellement la télécommande à récupérer. Lorsqu'aucune branche n'est spécifiée, la valeur par défaut est généralement master
(3) git fetch origin dev
spécifie distant et FETCH_HEAD, et extrait uniquement les validations de cette branche.
Cette commande accédera à l’entrepôt distant et extraira toutes les données que vous n’avez pas encore. Une fois l'exécution terminée, vous aurez des références à toutes les branches de ce référentiel distant, qui pourront être fusionnées ou visualisées à tout moment.
Si vous utilisez la commande git clone pour cloner un référentiel, la commande l'ajoutera automatiquement en tant que référentiel distant (git remote -v) et utilisera "origin" comme abréviation par défaut. Ainsi, git fetch origin récupérera tout le travail nouvellement poussé depuis le clone (ou la dernière récupération). Il est important de noter que la commande git fetch extraira les données dans votre référentiel local – elle ne fusionnera ni ne modifiera automatiquement votre travail en cours. Vous devez l'intégrer manuellement dans votre travail lorsque vous êtes prêt.
Si vous avez une branche configurée pour suivre une branche distante, vous pouvez utiliser la commande git pull pour récupérer et fusionner automatiquement la branche distante dans la branche actuelle. Cela peut être un flux de travail plus simple ou plus confortable pour vous ; par défaut, la commande git clone définit automatiquement la branche principale locale pour suivre la branche principale du référentiel distant cloné (ou quel que soit le nom de la branche par défaut). L'exécution de git pull récupère généralement les données du serveur initialement cloné et tente automatiquement de les fusionner dans la branche actuelle.
git pull : Tout d'abord, sur la base de l'enregistrement FETCH_HEAD local, comparez l'enregistrement FETCH_HEAD local avec le numéro de version de l'entrepôt distant, puis git fetch obtient les données de version ultérieures de l'entrepôt distant branch actuellement pointée vers , puis utilisez git merge pour la fusionner avec la branche actuelle locale. On peut donc considérer que git pull est une combinaison des deux étapes de git fetch et git merge.
L'utilisation de git pull est la suivante :
git pull <远程主机名> <远程分支名>:<本地分支名> //取回远程主机某个分支的更新,再与本地的指定分支合并。
Par conséquent, par rapport à git pull, git fetch équivaut à obtenir la dernière version de la télécommande vers le local, mais cela ne fusionnera pas automatiquement. Si vous avez besoin de fusionner sélectivement, git fetch est un meilleur choix. Lorsque l'effet est le même, git pull sera plus rapide.
Remarque : utiliser git pull pour mettre à jour le code est relativement simple et violent. Cependant, à en juger par l'ID de commit, leurs principes d'implémentation réels sont différents, alors n'utilisez pas git pull et git merge. pour faciliter la sécurité.
Tutoriel recommandé : "Git"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!