Git Fetch : une classe de maître
Publié: 2023-02-26
La commande Git fetch
vous permet de regarder avant de sauter. Vous pouvez découvrir les modifications apportées à un référentiel distant, mais sans écraser vos fichiers locaux avec les fichiers distants.
Qu'est-ce que git fetch et que fait-il ?
Git fetch vs pull
Synchronisez vos référentiels locaux et distants avec git fetch
Voir toutes les balises récupérées
Faire d'abord un essai à blanc
Comment récupérer une seule branche
Récupérer toutes les branches
Comparaison des succursales locales et distantes
Synchronisation d'une branche locale avec une branche distante
Le chiot à moitié dressé
Qu'est-ce que git fetch et que fait-il ?
La commande fetch
de Git télécharge les commits, les fichiers et d'autres informations d'un référentiel distant vers votre référentiel local, en toute sécurité. Utilisez fetch lorsque vous souhaitez voir les modifications apportées par d'autres développeurs, sans être obligé d'accepter les modifications. Vos fichiers locaux restent intacts. Pourquoi est-ce important ?
Vous devez garder votre sang-froid lorsque vous travaillez au sein d'une équipe de développement. Le référentiel distant ou central contiendra les modifications et les nouvelles branches que d'autres développeurs ont créées et poussées vers le référentiel distant.
Il est tout à fait possible que quelqu'un ait mis à jour la copie distante des fichiers que vous avez modifiés localement sur votre ordinateur. Si vous effectuez avec désinvolture un git pull
pour mettre à jour votre référentiel local, vous vous retrouverez probablement à gérer des fusions pour des modifications que vous ne souhaitez peut-être même pas.
Une fois que vous avez téléchargé les informations, vous pouvez les examiner et voir quels sont les changements. Cela vous permet de faire un choix éclairé sur ce que vous souhaitez fusionner maintenant, le cas échéant, et sur ce que vous souhaitez reporter à plus tard.
Git fetch vs pull
La commande git fetch
se comporte comme la commande git pull
mais sans l'étape qui écrase vos fichiers locaux. Votre référentiel local est mis à jour et synchronisé, mais les modifications ne sont pas écrites dans l'état de fonctionnement de votre référentiel local, de sorte que vos fichiers restent intacts.
Ou, pour le dire autrement, la commande git pull
est comme un git fetch
suivi immédiatement d'un git merge
.
Synchronisez vos référentiels locaux et distants avec git fetch
Pour récupérer toutes les métadonnées mises à jour et les validations d'un référentiel distant vers votre référentiel local, utilisez la commande git fetch
avec le nom ou l'URL du référentiel distant. Par défaut, le premier référentiel distant est appelé "origine".
git récupérer l'origine
Vous pouvez omettre le mot "origine" si vous travaillez avec un seul référentiel distant.
git chercher
Cela récupère toutes les mises à jour du référentiel "origine", mais il ne fusionne pas les modifications dans les fichiers de travail. Nous pouvons voir qu'il y a une nouvelle branche, appelée "new-branch", qui a été récupérée pour nous.
Une fois que vous avez utilisé la commande fetch
, vous pouvez voir la liste complète des branches sur la télécommande, en utilisant l'option -r
(remote) avec la commande branch.
branche git -r
Cela répertorie toutes les branches connues par la télécommande, qui après le fetch
, se trouvent également dans votre référentiel local.
Voir toutes les balises récupérées
De même, vous pouvez utiliser l'option tag
(notez que c'est "tag" sans "s") pour voir la liste des tags.
balise git
CONNEXION : Comment changer, ajouter et supprimer des télécommandes Git
Faire d'abord un essai à blanc
Bien qu'un git fetch
ne fusionne pas les modifications dans vos fichiers de travail, il met toujours à jour votre référentiel local. Si vous voulez voir quel changement la commande fetch
effectuera, sans le faire réellement, utilisez l'option --dry-run
.
git fetch --dry-run
Comment récupérer une seule branche
Récupérer des informations sur une seule branche est facile. Ajoutez le nom de la branche à la ligne de commande pour indiquer fetch
vous n'avez besoin de connaître que cette branche.
Ici, nous demandons à fetch
de récupérer la branche "mary-feature" du référentiel distant "origin".

git fetch origin mary-fonctionnalité
Maintenant que les détails et le contenu de la branche distante se trouvent dans votre référentiel local, vous pouvez utiliser la commande git checkout
pour créer une nouvelle branche et extraire la branche distante. Cela n'écrasera aucun fichier existant si c'est la première fois que vous utilisez cette branche.
git checkout -b origine mary-feature/mary-feature
Récupérer toutes les branches
Si vous utilisez plusieurs télécommandes, vous pouvez gagner du temps en récupérant toutes les modifications de toutes les branches vers votre référentiel local à l'aide de l'option --all
.
git fetch --all
Comparaison des succursales locales et distantes
Pour voir en quoi les fichiers d'une branche distante diffèrent de vos copies locales, utilisez git fetch
, puis utilisez la commande git log
.
Notez que les branches locales et distantes sont séparées par deux points « ..
». L'option --oneline
affiche l'identifiant de validation et le message de validation.
git chercher
git log --oneline mary-feature..origin/mary-feature
L'affichage sur une ligne est utile si une branche contient un grand nombre de modifications. Pour voir un peu plus d'informations, omettez l'option --oneline
.
git log mary-feature..origin/mary-feature
Cela nous montre l'heure et la date de chaque commit, ainsi que le message de commit et les coordonnées de l'auteur du changement.
Synchronisation d'une branche locale avec une branche distante
Si vous avez décidé de continuer et de fusionner les modifications de la branche distante vers vos fichiers de travail locaux, vous pouvez utiliser ces commandes.
Nous vérifierons la branche pour nous assurer que nous travaillons, c'est notre branche actuelle qui fonctionne.
git checkout mary-fonctionnalité
La branche est vérifiée pour nous, et on nous dit qu'elle est derrière la version distante. Nous pouvons utiliser git pull
pour le mettre à jour, puis git status
pour vérifier notre statut.
git tirer
statut git
Si nous avons apporté des modifications à nos fichiers locaux, Git nous informe lorsque nous extrayons la branche que nous devrons effectuer un git pull
pour démarrer une fusion.
git checkout mary-fonctionnalité
Un simple git pull
démarre le processus de récupération des fichiers et de fusion, ou nous pouvons plonger directement et utiliser git merge
lui-même. Nous allons commencer par nous assurer que nous travaillons avec la bonne branche
git checkout mary-fonctionnalité
Nous dirons à git
de fusionner notre branche actuelle avec la branche du référentiel distant, il y a six commits différents qui doivent être résolus.
Nous devons indiquer à Git quelle branche distante nous voulons fusionner.
git merge origin/mary-feature
Un éditeur s'ouvre pour nous permettre de fournir un message de validation. Nous pouvons accepter le message suggéré ou ajouter le nôtre. L'éditeur est votre éditeur par défaut sauf si Git a été configuré pour utiliser un autre éditeur.
Enregistrez vos modifications lorsque vous êtes prêt à continuer. La fusion se poursuit automatiquement à la fermeture de l'éditeur.
Notre fusion a réussi car il n'y a pas eu de conflits.
Des conflits surviennent lorsque les mêmes lignes de code sont modifiées par deux développeurs ou plus. Si tel est le cas, Git marque les conflits dans le fichier concerné. Vous devrez les examiner à tour de rôle et choisir la modification à conserver.
Le chiot à moitié dressé
Tout comme un chiot en formation, fetch
récupérera ce que vous demandez, mais il ne le laissera pas tomber. Si vous voulez réellement ce que le chiot vous a montré, vous devrez pull
.
CONNEXION : Git rebase : tout ce que vous devez savoir