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.
Sommaire
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
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
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
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
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
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
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
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
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
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
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
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
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.
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 à 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
.