Maison outils de développement git La différence entre 'git fetch' et 'git pull'

La différence entre 'git fetch' et 'git pull'

Jul 22, 2020 pm 05:59 PM
fetch git pull

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分支 可以用这步删除
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 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 <远程主机名> <远程分支名>:<本地分支名>
//取回远程主机某个分支的更新,再与本地的指定分支合并。
Copier après la connexion

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelles bibliothèques sont utilisées pour les opérations du numéro de point flottantes en Go? Quelles bibliothèques sont utilisées pour les opérations du numéro de point flottantes en Go? Apr 02, 2025 pm 02:06 PM

La bibliothèque utilisée pour le fonctionnement du numéro de point flottante dans le langage go présente comment s'assurer que la précision est ...

Comment exécuter le projet H5 Comment exécuter le projet H5 Apr 06, 2025 pm 12:21 PM

L'exécution du projet H5 nécessite les étapes suivantes: Installation des outils nécessaires tels que le serveur Web, Node.js, les outils de développement, etc. Créez un environnement de développement, créez des dossiers de projet, initialisez les projets et écrivez du code. Démarrez le serveur de développement et exécutez la commande à l'aide de la ligne de commande. Aperçu du projet dans votre navigateur et entrez l'URL du serveur de développement. Publier des projets, optimiser le code, déployer des projets et configurer la configuration du serveur Web.

Gitee Pages STATIQUE Le déploiement du site Web a échoué: comment dépanner et résoudre les erreurs de fichier unique 404? Gitee Pages STATIQUE Le déploiement du site Web a échoué: comment dépanner et résoudre les erreurs de fichier unique 404? Apr 04, 2025 pm 11:54 PM

GiteEpages STATIQUE Le déploiement du site Web a échoué: 404 Dépannage des erreurs et résolution lors de l'utilisation de Gitee ...

Comment spécifier la base de données associée au modèle de Beego ORM? Comment spécifier la base de données associée au modèle de Beego ORM? Apr 02, 2025 pm 03:54 PM

Dans le cadre du cadre de beegoorm, comment spécifier la base de données associée au modèle? De nombreux projets Beego nécessitent que plusieurs bases de données soient opérées simultanément. Lorsque vous utilisez Beego ...

Quelles bibliothèques de GO sont développées par de grandes entreprises ou fournies par des projets open source bien connus? Quelles bibliothèques de GO sont développées par de grandes entreprises ou fournies par des projets open source bien connus? Apr 02, 2025 pm 04:12 PM

Quelles bibliothèques de GO sont développées par de grandes entreprises ou des projets open source bien connus? Lors de la programmation en Go, les développeurs rencontrent souvent des besoins communs, ...

Comment résoudre le problème de conversion de type user_id lors de l'utilisation du flux redis pour implémenter les files d'attente de messages dans le langage Go? Comment résoudre le problème de conversion de type user_id lors de l'utilisation du flux redis pour implémenter les files d'attente de messages dans le langage Go? Apr 02, 2025 pm 04:54 PM

Le problème de l'utilisation de Redessstream pour implémenter les files d'attente de messages dans le langage GO consiste à utiliser le langage GO et redis ...

La production de pages H5 nécessite-t-elle une maintenance continue? La production de pages H5 nécessite-t-elle une maintenance continue? Apr 05, 2025 pm 11:27 PM

La page H5 doit être maintenue en continu, en raison de facteurs tels que les vulnérabilités du code, la compatibilité des navigateurs, l'optimisation des performances, les mises à jour de sécurité et les améliorations de l'expérience utilisateur. Des méthodes de maintenance efficaces comprennent l'établissement d'un système de test complet, à l'aide d'outils de contrôle de version, de surveiller régulièrement les performances de la page, de collecter les commentaires des utilisateurs et de formuler des plans de maintenance.

Lorsque vous utilisez SQL.Open, pourquoi ne signale pas une erreur lorsque DSN passe vide? Lorsque vous utilisez SQL.Open, pourquoi ne signale pas une erreur lorsque DSN passe vide? Apr 02, 2025 pm 12:54 PM

Lorsque vous utilisez SQL.Open, pourquoi le DSN ne signale-t-il pas une erreur? En langue go, sql.open ...

See all articles