GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Git Fetch :définition et exemples

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.


Ubuntu
  1. Comment renommer une branche Git locale et distante

  2. Commande SCP sous Linux :comment l'utiliser, avec des exemples

  3. Git Remote Add avec un autre port SSH (pas 22)

  4. Comment renommer Git Branch Local et Remote

  5. Vérifiez si le dépôt git local est devant/derrière la télécommande

Commandes SSH sous Linux avec exemples d'utilisation

Comment configurer un référentiel Git distant sur Debian 11

Comment supprimer le référentiel distant Git

Comment configurer un référentiel git avec Plesk

Comment cloner un référentiel Git avec Ansible

Comment configurer et gérer un référentiel Git distant sous Linux