Git Fetch : une classe de maître
Agence web » Actualités du digital » Git Fetch : une classe de maître

Git Fetch : une classe de maître

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.

Le connard fetch La commande 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 ?

Le fetch La commande dans 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

Le git fetch la commande se comporte comme la git pull commande 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, le git pull la commande est comme un git fetch immédiatement suivi 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 le git fetch commande avec le nom ou l’URL du référentiel distant. Par défaut, le premier référentiel distant est appelé « origine ».

git fetch origin

Vous pouvez omettre le mot « origine » si vous travaillez avec un seul référentiel distant.

git fetch

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é le fetch commande, vous pouvez voir la liste complète des branches sur la télécommande, en utilisant -r (distant) avec la commande branch.

git branch -r

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

Cela répertorie toutes les branches que la télécommande connaît, 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 le tag option (note, c’est « tag » sans « s ») pour voir la liste des tags.

git tag

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

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 ce qui change le fetch commande s’exécutera, sans réellement les faire, utilisez le --dry-run option.

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 dire fetch vous n’avez besoin de connaître que cette branche.

Ici, nous disons fetch pour récupérer la branche « mary-feature » du référentiel distant « origin ».

git fetch origin mary-feature

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

Maintenant que les détails et le contenu de la branche distante sont dans votre référentiel local, vous pouvez utiliser le git checkout commande 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 mary-feature origin/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 extrayant toutes les modifications de toutes les branches vers votre référentiel local en utilisant le --all option.

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 le git log commande.

Notez que les succursales locales et distantes ont deux périodes « ..» les séparant. Le --oneline L’option affiche l’identifiant de validation et le message de validation.

git fetch
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 le --oneline option.

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-feature

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. On peut utiliser git pull pour le mettre à jour, alors git status pour vérifier notre statut.

git pull
git status

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 une git pull pour démarrer une fusion.

git checkout mary-feature

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-feature

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

Nous dirons git pour 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 à l’entraînement, 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.

★★★★★