Maison > Tutoriel système > Linux > En savoir plus sur la différence entre git fetch et git pull

En savoir plus sur la différence entre git fetch et git pull

王林
Libérer: 2024-04-27 21:34:33
avant
488 Les gens l'ont consulté

详细了解git fetch与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 ? Il y a plusieurs concepts qui doivent être mentionnés pour clarifier ce problème.

FETCH_HEAD : Il s'agit d'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 et l'enregistrera dans le fichier .git/FETCH_HEAD
La façon dont git fetch met à jour le référentiel distant est la suivante :

git fetch origin master:tmp <span class="hljs-comment">
//在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支</span>
git diff tmp <span class="hljs-comment">
//来比较本地代码与刚刚从远程下载下来的代码的区别</span>
git <span class="hljs-built_in">merge</span> tmp<span class="hljs-comment">
//合并temp分支到本地的master分支</span>
git branch -d temp<span class="hljs-comment">
//如果不想保留temp分支 可以用这步删除</span>
Copier après la connexion

(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 branche branch-origin/current actuelle dans FETCH_HEAD Si vous effectuez git merge directement, origin/abc peut être fusionné dans la branche abc.

(2)git récupérer l'origine
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écifiez remote et FETCH_HEAD, et extrayez uniquement les commits de cette branche.

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 utilisez git fetch pour obtenir les données de version suivantes de la branche distante actuellement pointée, puis utilisez git merge pour le fusionner avec Merge 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 <span class="hljs-tag"><<span class="hljs-title">远程主机名</span>></span> <span class="hljs-tag"><<span class="hljs-title">远程分支名</span>></span>:<span class="hljs-tag"><<span class="hljs-title">本地分支名</span>></span>
//取回远程主机某个分支的更新,再与本地的指定分支合并。
Copier après la connexion

Par conséquent, comparé à git pull, git fetch équivaut à obtenir la dernière version du distant vers le local, mais il 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.

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!

source:linuxprobe.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal