Git Fetch : une classe de maître

Publié: 2023-02-26
Ordinateur portable Linux affichant une fenêtre de terminal avec un motif de globe en arrière-plan et un filigrane binaire
fatmawati achmad zaenuri/Shutterstock.com
La commande git fetch est comme une commande git pull qui met à jour votre référentiel local avec des informations et des validations à partir du référentiel distant, sans écraser vos fichiers de travail.

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.

Table des matières

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 

Utilisation de la commande git fetch sur le référentiel distant par défaut

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 

En regardant les branches qui existent sur la télécommande par défaut

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 

Utilisation de la commande git tag pour répertorier les balises dans le référentiel local

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 

En utilisant l'option --dry-run, voyez les changements que la commande fetch récupérerait

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é 

Utilisation de git fetch pour récupérer une seule branche distante

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 

Extraire en toute sécurité une branche distante récupérée vers une nouvelle branche locale

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 

Utiliser git pour récupérer les modifications à distance et git log pour afficher les modifications

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 

Omettre l'option --oneline pour que git affiche plus de détails pour chaque commit

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é 

Vérification d'une succursale

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 

Extraction des modifications du référentiel rmeote vers le référentiel local

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é 

Git nous informant que les branches locales et distantes ont divergé et doivent être fusionnées

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é 

Git nous informant que les branches locales et distantes ont divergé et doivent être fusionnées

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.

Un message de fusion réussi

Nous devons indiquer à Git quelle branche distante nous voulons fusionner.

 git merge origin/mary-feature 

utiliser git merge pour fusionner les changements distants dans une branche locale

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.

Modification du message de validation

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.

Un message de fusion réussi

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