Comment vérifier si un commit Git existe

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 à vérifier si un commit Git spécifique existe et à examiner ses détails. Vous utiliserez la commande git show avec un hash de commit pour afficher les informations sur un commit particulier, y compris son auteur, sa date, son message et les modifications qu'il a introduites.

En outre, vous explorerez comment rechercher des commits sur toutes les branches à l'aide de git log --all et comprendrez comment Git gère les hashs de commit invalides ou inexistants. Ce laboratoire vous dotera des compétences essentielles pour naviguer dans et comprendre l'historique de votre projet dans Git.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/diff("Compare Changes") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/diff -.-> lab-560054{{"Comment vérifier si un commit Git existe"}} git/log -.-> lab-560054{{"Comment vérifier si un commit Git existe"}} end

Exécuter git show avec un hash de commit

Dans les étapes précédentes, nous avons appris à créer des commits et à afficher le journal des commits à l'aide de git log. Chaque commit a un identifiant unique, souvent appelé "hash de commit" ou "SHA". Ce hash est comme une empreinte digitale pour ce point de sauvegarde spécifique dans l'historique de votre projet.

Maintenant, utilisons ce hash de commit pour examiner plus en détail un commit spécifique. Nous pouvons utiliser la commande git show suivie du hash de commit.

Tout d'abord, récupérons le hash de commit de notre premier commit. Exécutons à nouveau git log :

cd ~/project/my-time-machine
git log --oneline

Vous devriez voir une sortie similaire à celle-ci :

a1b2c3d (HEAD -> master) Envoyer un message au futur

La courte chaîne de caractères au début (a1b2c3d dans cet exemple) est la version courte du hash de commit. Le hash complet est beaucoup plus long, mais Git vous permet d'utiliser la version courte tant qu'elle est suffisamment unique pour identifier le commit.

Copiez le court hash de commit de votre sortie. Maintenant, utilisez la commande git show avec ce hash. Remplacez YOUR_COMMIT_HASH par le hash que vous avez copié :

git show YOUR_COMMIT_HASH

Par exemple, si votre hash était a1b2c3d, vous exécuteriez :

git show a1b2c3d

Vous devriez voir des informations détaillées sur ce commit, notamment :

  • Le hash de commit complet
  • L'auteur et la date
  • Le message de commit
  • Les modifications introduites dans ce commit (dans ce cas, l'ajout de message.txt)
commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Envoyer un message au futur

diff --git a/message.txt b/message.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/message.txt
@@ -0,0 +1 @@
+Hello, Future Me

La commande git show est incroyablement utile pour comprendre l'historique de votre projet. Vous pouvez l'utiliser pour voir exactement quelles modifications ont été apportées dans n'importe quel commit donné, ce qui est essentiel pour le débogage ou pour comprendre comment une fonctionnalité a été implémentée.

Imaginez cela comme l'ouverture d'une capsule temporelle spécifique de l'historique de votre projet et l'examen minutieux de son contenu. Cette capacité à identifier et à examiner les modifications passées est l'une des raisons principales pour lesquelles Git est si puissant pour gérer des projets de toutes tailles.

Utiliser git log --all pour rechercher des commits

Dans les étapes précédentes, nous avons vu comment git log affiche l'historique de la branche actuelle. Mais que se passe-t-il si votre projet a plusieurs branches (différentes lignes temporelles) ? La commande de base git log n'affiche que l'historique de la branche sur laquelle vous vous trouvez actuellement.

Pour voir l'historique de toutes les branches de votre dépôt, vous pouvez utiliser l'option --all avec git log. C'est comme regarder toutes les différentes lignes temporelles de votre machine à remonter le temps en même temps.

Essayons-le :

cd ~/project/my-time-machine
git log --all

Étant donné que nous n'avons pour l'instant qu'une seule branche (master) et un seul commit, la sortie ressemblera beaucoup à celle de la commande de base git log :

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

Au fur et à mesure que votre projet grandit et que vous créez plus de branches, git log --all deviendra beaucoup plus utile. Il vous aide à visualiser l'historique complet de votre projet, y compris les commits sur différentes branches qui pourraient ne pas être directement liés à votre branche actuelle.

Vous pouvez également combiner --all avec d'autres options de git log, comme --oneline, pour avoir une vue plus concise de l'historique de toutes les branches :

git log --all --oneline

Cela affichera un résumé de chaque commit sur chaque branche :

a1b2c3d (HEAD -> master) Send a message to the future

Utiliser git log --all est un excellent moyen d'obtenir une vue d'ensemble complète de l'historique de développement de votre projet. C'est comme regarder une carte de tous les différents chemins que votre projet a empruntés.

N'oubliez pas d'appuyer sur q pour quitter la vue du journal.

Gérer les hashs de commit invalides

Dans les étapes précédentes, nous avons utilisé un hash de commit valide avec git show. Mais que se passe-t-il si vous essayez d'utiliser un hash qui n'existe pas ou qui est incorrect ? Git est intelligent, mais il a besoin d'une référence valide pour savoir de quel commit vous parlez.

Essayons d'utiliser git show avec un hash de commit invalide. Tapez une chaîne aléatoire de caractères qui n'est certainement pas un hash de commit valide de votre journal :

cd ~/project/my-time-machine
git show abcdefg

Vous devriez voir un message d'erreur similaire à celui-ci :

fatal: bad object abcdefg

Ce message vous indique que Git n'a pas pu trouver un objet (dans ce cas, un commit) avec le hash abcdefg. C'est la façon dont Git dit : "Je ne sais pas de quel point de sauvegarde tu parles !"

Comprendre comment Git gère les entrées invalides est important. Lorsque vous voyez une erreur "bad object", cela signifie généralement que le hash de commit ou une autre référence que vous avez fournie est incorrecte ou n'existe pas dans l'historique de votre dépôt.

Cela peut arriver si vous tapez un hash incorrectement, ou si vous essayez de référencer un commit d'un autre dépôt ou d'une branche qui a été supprimée.

Si vous rencontrez cette erreur, vérifiez à nouveau le hash de commit que vous utilisez. Vous pouvez utiliser git log ou git log --oneline pour trouver le bon hash du commit que vous souhaitez examiner.

Cette étape renforce l'importance d'utiliser des hashs de commit corrects lors de la navigation dans l'historique de votre projet. Tout comme une machine à remonter le temps a besoin des bonnes coordonnées pour voyager à un point spécifique dans le temps, Git a besoin du bon hash pour vous montrer un commit spécifique.

Résumé

Dans ce laboratoire (lab), nous avons appris à vérifier si un commit Git existe et à examiner ses détails. Nous avons commencé par utiliser la commande git show avec un hash de commit spécifique obtenu grâce à git log --oneline. Cela nous a permis d'afficher des informations complètes sur un commit, notamment son auteur, sa date, son message et les modifications exactes introduites. Nous avons également exploré comment utiliser git log --all pour rechercher des commits sur toutes les branches, ce qui est utile pour trouver des commits qui ne se trouvent peut-être pas sur la branche actuelle. Enfin, nous avons appris comment Git gère les hashs de commit invalides ou inexistants, démontrant que git show signalera une erreur si le hash fourni n'est pas trouvé dans l'historique du dépôt.