Présentation
Le git fetch
La commande télécharge des objets sur la machine locale sans écraser le code local existant dans la branche actuelle. La commande extrait un enregistrement des modifications apportées au référentiel distant, ce qui permet d'avoir un aperçu de l'historique de progression avant les ajustements.
Lisez la suite pour apprendre à utiliser le git fetch
commande à travers des exemples pratiques.

Prérequis
- Git installé, mis à jour et configuré.
- Accès à la ligne de commande/au terminal.
- Un lien de référentiel distant ou une télécommande Git configurée.
Qu'est-ce que git fetch ?
Le git fetch
La commande récupère les commits, les fichiers, les branches et les balises d'un référentiel distant. La syntaxe générale de la commande est :
git fetch <options> <remote name> <branch name>
Git isole le contenu récupéré du code local. Par conséquent, la récupération offre un moyen sûr d'examiner les informations avant de s'engager dans votre succursale locale.
Comment fonctionne la commande git fetch ?
Le git fetch
La commande récupère toutes les modifications à partir d'un référentiel distant. Les métadonnées récupérées résident dans le .git répertoire, tandis que le répertoire de travail reste inchangé.
En effet, git fetch
récupère les métadonnées sans appliquer les modifications localement. La commande git pull combine git fetch
et les fonctions de fusion git en une seule.

Étant donné que l'état du répertoire de travail reste inchangé, le contenu récupéré doit être extrait avec la commande git checkout ou fusionné avec git merge.
Cependant, étant donné que joindre du contenu est un processus manuel, git fetch
permet de revoir le code avant de changer quoi que ce soit. Le processus de révision permet d'éviter les conflits de fusion.
Options de récupération de Git
Vous trouverez ci-dessous la liste des options couramment utilisées lorsque vous travaillez avec git fetch
:
--all
- Récupérer toutes les télécommandes.--append
(-a
) - S'ajoute au contenu récupéré existant sans écraser.--depth=<depth>
- Limite à un nombre spécifique de validations à partir de la pointe de chaque historique de branche distante.--deepen=<depth>
- Limiter à un nombre spécifique de validations à partir de la limite actuelle de chaque historique de branche distante jusqu'au tip.--shallow-since=<date>
- Inclure tous les commits accessibles après la date spécifiée.--shallow-exclude=<revision>
- Exclut les commits d'une branche ou d'une balise distante spécifiée. Utilisez l'option plusieurs fois pour spécifier plusieurs exclusions.--dry-run
- L'option ajoutée à n'importe quelle commande montre ce qui se passe sans exécuter la commande en tant que démo.--multiple
- Autorise plusieurs<repository or group>
arguments.--no-tags
- Désactiver le suivi automatique des balises.--tags
- Récupérez toutes les balises à partir d'une télécommande.--set-upstream
- Ajouter un suivi en amont.
Pour voir toutes les options disponibles, exécutez la commande suivante dans le terminal :
git fetch --help
La commande affiche la page d'aide complète avec une description détaillée de toutes les options disponibles.
Récupérer les dépôts Git
Les exemples nécessitent un référentiel distant ajouté. Si vous avez déjà configuré une télécommande, passez à la section suivante. Sinon, ajoutez une télécommande Git en suivant les étapes ci-dessous :
1. Ouvrez le terminal et créez un répertoire pour le projet :
mkdir <directory name>
2. Entrez dans le répertoire à l'aide du cd
commande :
cd <directory name>
3. Initialisez le référentiel local avec :
git init

4. Utilisez la commande suivante pour ajouter une URL distante au référentiel local :
git remote add <short remote name> <remote URL>
Par exemple :
git remote add origin [email protected]:phoenixNAP-KB/test.git
5. Confirmez que la télécommande a bien été ajoutée :
git remote -v

Suivez les exemples dans les sections ci-dessous pour voir comment le git fetch
La commande fonctionne pour divers cas d'utilisation.
Récupérer un référentiel distant
La manière la plus simple d'utiliser le git fetch
commande est de récupérer un dépôt distant :
git fetch <remote name>
Par exemple :
git fetch origin

La sortie montre que la commande a récupéré tout le contenu du référentiel distant, y compris les branches et les balises.
Lister toutes les branches distantes récupérées avec :
git branch -r

Pour lister tous les tags récupérés, exécutez :
git tag

Utilisez la commande git checkout pour rendre le contenu disponible localement pour une nouvelle branche ou utilisez git merge pour synchroniser les informations du référentiel local.
Récupérer une branche spécifique
Pour récupérer une branche spécifique d'un dépôt, exécutez cette commande :
git fetch <remote name> <branch name>
Par exemple, pour récupérer une branche nommée test depuis l'origine , exécutez :
git fetch origin test

La commande ne récupère que le contenu de la branche spécifique. Pour extraire le contenu récupéré vers une nouvelle branche, exécutez :
git checkout -b test_branch origin/test

Le contenu est maintenant disponible localement dans la branche test_branch .
Récupérer toutes les branches de toutes les télécommandes
Dans les cas où il y a plusieurs télécommandes, git fetch
propose une commande pour récupérer les informations de toutes les télécommandes.
Pour voir toutes les télécommandes, exécutez :
git remote

Récupérez tout le contenu de toutes les télécommandes avec :
git fetch --all

La sortie montre le processus de récupération à partir de tous les référentiels distants.
Synchroniser le référentiel local
Utilisez le git fetch
commande avec git merge pour synchroniser le référentiel local. Suivez les étapes ci-dessous pour voir comment l'exemple fonctionne :
1. Récupérez le référentiel distant avec :
git fetch <remote name>
2. Comparez la branche locale à la branche distante en listant les différences de commit :
git log --oneline <local branch>..<remote name>/<remote branch name>
Par exemple, si la branche locale est test_branch et la télécommande est à origine/test , la commande suivante répertorie les différences :
git log --oneline test_branch..origin/test

La sortie répertorie les commits et les messages associés.
3. Vérifiez la branche locale où vous souhaitez que les modifications soient fusionnées :
git checkout <local branch>
Par exemple :
git checkout test_branch
4. Synchronisez la branche locale avec la commande git merge :
git merge origin/main

Le contenu est maintenant à jour avec le référentiel distant. S'il y a un avertissement de conflit, suivez notre tutoriel pour résoudre les problèmes de fusion :Comment résoudre les conflits de fusion dans Git.
git fetch contre. git pull
Le tableau ci-dessous décrit comment le git fetch
et les commandes git pull se comparent.
git fetch | git pull |
---|---|
Télécharge de nouvelles informations à partir d'un référentiel distant sans fusionner avec la branche actuelle. | Télécharge toutes les modifications depuis un référentiel distant et les fusionne dans la branche actuelle. |
Met à jour les données du référentiel dans le .git répertoire. | Met à jour directement le référentiel local. |
Permet d'examiner les validations et les modifications d'autres développeurs avant de valider le code. | Permet d'apporter et de mettre à jour immédiatement les modifications dans le référentiel local. |
Aucune possibilité de conflits de fusion lors de l'exécution de la commande. | Conflits de fusion possibles nécessitant une résolution immédiate. |
Sur les deux commandes, git fetch
est l'option la plus sûre lors de la récupération des modifications de code à partir d'un référentiel distant.