Comment vérifier si une branche Git est en retard par rapport à la branche distante

GitGitBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à déterminer si votre branche Git locale est en retard par rapport à sa branche distante correspondante. Nous aborderons les étapes essentielles pour y parvenir, en commençant par la récupération des dernières modifications depuis le dépôt distant à l'aide de git fetch.

Après la récupération, vous utiliserez git status pour vérifier rapidement si votre branche est en retard par rapport à la branche distante. Enfin, vous apprendrez à utiliser git log HEAD..@{u} pour afficher les commits spécifiques qui existent sur la branche distante mais pas sur votre branche locale, vous donnant ainsi une compréhension détaillée des différences.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git(("Git")) -.-> git/CollaborationandSharingGroup(["Collaboration and Sharing"]) git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git/BasicOperationsGroup -.-> git/status("Check Status") git/BranchManagementGroup -.-> git/log("Show Commits") git/CollaborationandSharingGroup -.-> git/fetch("Download Updates") git/CollaborationandSharingGroup -.-> git/pull("Update & Merge") git/CollaborationandSharingGroup -.-> git/remote("Manage Remotes") subgraph Lab Skills git/status -.-> lab-560042{{"Comment vérifier si une branche Git est en retard par rapport à la branche distante"}} git/log -.-> lab-560042{{"Comment vérifier si une branche Git est en retard par rapport à la branche distante"}} git/fetch -.-> lab-560042{{"Comment vérifier si une branche Git est en retard par rapport à la branche distante"}} git/pull -.-> lab-560042{{"Comment vérifier si une branche Git est en retard par rapport à la branche distante"}} git/remote -.-> lab-560042{{"Comment vérifier si une branche Git est en retard par rapport à la branche distante"}} end

Récupérer les modifications distantes avec git fetch

Dans cette étape, nous apprendrons à récupérer les modifications depuis un dépôt Git distant. Imaginez que vous collaborez avec d'autres personnes et qu'elles ont apporté des modifications au projet. git fetch est la commande que vous utilisez pour télécharger ces modifications sur votre machine locale sans les fusionner avec votre travail actuel.

Tout d'abord, simulons avoir un dépôt distant. Nous allons en créer un simple localement à des fins de démonstration.

cd ~/project
mkdir remote-repo
cd remote-repo
git init --bare

Cela crée un dépôt "nu" (bare repository), qui est généralement utilisé comme dépôt distant central. Maintenant, revenons à notre dépôt my-time-machine et ajoutons celui-ci en tant que dépôt distant.

cd ~/project/my-time-machine
git remote add origin ../remote-repo

Nous avons ajouté un dépôt distant nommé origin pointant vers notre dépôt distant simulé. Maintenant, apportons une modification dans le dépôt distant puis récupérons - la.

cd ~/project/remote-repo
echo "This is a remote change." > remote_file.txt
git add remote_file.txt
git commit -m "Add remote file"

Maintenant, dans notre dépôt my-time-machine, récupérons les modifications depuis le dépôt distant.

cd ~/project/my-time-machine
git fetch origin

Vous devriez voir un message indiquant que Git a téléchargé les modifications depuis le dépôt distant. Quelque chose comme ceci :

remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 2 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (2/2), 258 bytes | 258.00 KiB | elapsed 0.00s.
From ../remote-repo
 * [new branch]      master     -> origin/master

La commande git fetch télécharge les commits, les fichiers et les références depuis le dépôt distant dans votre dépôt local. Cependant, elle ne fusionne pas automatiquement ces modifications dans votre branche de travail actuelle. Cela vous permet d'inspecter les modifications avant de les intégrer.

Imaginez git fetch comme la récupération des dernières mises à jour d'un flux d'actualités. Vous voyez les titres et les résumés, mais vous n'avez pas encore lu les articles complets. Vous pouvez décider plus tard quels articles (modifications) vous voulez lire (fusionner).

Utiliser git status pour vérifier l'état de retard

Dans l'étape précédente, nous avons récupéré les modifications depuis le dépôt distant. Maintenant, utilisons git status pour voir comment notre dépôt local se compare au dépôt distant.

Assurez-vous d'être dans le répertoire ~/project/my-time-machine :

cd ~/project/my-time-machine

Maintenant, exécutez la commande git status :

git status

Vous devriez voir un résultat similaire à ceci :

On branch master
Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
  (use "git pull" to update your local branch)

nothing to commit, working tree clean

Ce résultat nous indique plusieurs choses importantes :

  • "On branch master" : Nous sommes actuellement sur la branche master.
  • "Your branch is behind 'origin/master' by 1 commit" : C'est le message clé ! Il indique que notre branche locale master est en retard d'un commit par rapport à la branche master sur le dépôt distant origin. Cela signifie qu'il y a un commit sur le dépôt distant que nous n'avons pas encore localement.
  • "(use "git pull" to update your local branch)" : Git nous donne même un indice sur la façon de mettre à jour notre branche locale.

La commande git status est votre fenêtre sur l'état de votre dépôt. Elle vous indique sur quelle branche vous vous trouvez, si vous avez des modifications non validées (uncommitted changes), et comment votre branche actuelle se compare à sa branche amont (dans ce cas, origin/master).

Comprendre le résultat de git status est crucial pour travailler efficacement avec Git. Cela vous aide à savoir si vous devez récupérer (pull) les modifications depuis le dépôt distant, si vous avez des modifications à valider (commit), ou si votre répertoire de travail est propre.

Exécuter git log HEAD..@{u} pour afficher les commits manquants

Dans l'étape précédente, git status nous a indiqué que notre branche locale est en retard par rapport à la branche distante. Mais comment savoir quels commits nous manquons ?

Nous pouvons utiliser la commande git log avec une syntaxe spéciale pour afficher uniquement les commits qui sont sur la branche distante mais pas sur notre branche locale. La syntaxe HEAD..@{u} compare notre branche actuelle (HEAD) avec sa branche amont (@{u}, qui est origin/master dans notre cas).

Assurez-vous d'être dans le répertoire ~/project/my-time-machine :

cd ~/project/my-time-machine

Maintenant, exécutez la commande suivante :

git log HEAD..@{u}

Vous devriez voir l'entrée du journal pour le commit que nous avons effectué dans le dépôt distant à l'Étape 1 :

commit <commit-hash> (origin/master)
Author: Your Name <[email protected]>
Date:   <Date and Time>

    Add remote file

Cette commande est très utile pour voir exactement quelles modifications vous obtiendrez lorsque vous récupérerez (pull) les modifications depuis le dépôt distant. Elle vous montre l'historique des commits qui est présent sur la branche de suivi distante (origin/master) mais pas encore sur votre branche locale (master).

Comprendre comment afficher les commits que vous manquez est important pour rester à jour avec le travail de vos collaborateurs et pour planifier vos fusions (merges).

Appuyez sur q pour quitter la vue du journal.

Résumé

Dans ce laboratoire (lab), nous avons appris à vérifier si une branche Git locale est en retard par rapport à sa contrepartie distante. Nous avons commencé par simuler un dépôt distant et l'ajouter à notre projet local en utilisant git remote add. Ensuite, nous avons pratiqué l'utilisation de git fetch pour télécharger les modifications depuis le dépôt distant sans les fusionner, démontrant ainsi comment cette commande met à jour notre dépôt local avec les dernières informations distantes.

Après avoir effectué la récupération (fetch), nous utilisons généralement git status pour voir si notre branche actuelle est en retard par rapport à la branche de suivi distante et git log HEAD..@{u} pour afficher les commits spécifiques qui sont présents sur le dépôt distant mais pas encore dans notre branche locale. Ces étapes fournissent ensemble une image claire de la divergence entre notre travail local et le dépôt distant.