Comment vérifier si un commit Git est signé

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 est signé. La signature des commits est une pratique essentielle pour vérifier l'authenticité et l'intégrité de l'historique de votre projet.

À travers des étapes pratiques, vous découvrirez comment utiliser la commande git log --show-signature pour afficher les informations de signature des commits et la commande git verify-commit pour vérifier la signature d'un commit spécifique. Vous apprendrez également à tester et à identifier les commits non signés, ce qui vous permettra de bien comprendre comment garantir la fiabilité de votre dépôt Git.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/add -.-> lab-560065{{"Comment vérifier si un commit Git est signé"}} git/status -.-> lab-560065{{"Comment vérifier si un commit Git est signé"}} git/commit -.-> lab-560065{{"Comment vérifier si un commit Git est signé"}} git/log -.-> lab-560065{{"Comment vérifier si un commit Git est signé"}} end

Exécuter git log --show-signature

Dans cette étape, nous allons découvrir comment afficher les signatures des commits à l'aide de la commande git log. La signature des commits est un moyen de vérifier l'identité de la personne qui a effectué un commit, ajoutant une couche supplémentaire de confiance à l'historique de votre projet.

Tout d'abord, accédez au répertoire de votre projet si vous n'y êtes pas déjà. N'oubliez pas que notre projet se trouve à l'emplacement ~/project/my-time-machine.

cd ~/project/my-time-machine

Maintenant, affichons le journal des commits avec l'option --show-signature. Cette option indique à Git d'afficher les informations de signature pour chaque commit s'il en existe.

git log --show-signature

Vous devriez voir le journal de votre commit précédent, et comme nous n'avons pas encore configuré la signature des commits, vous ne verrez aucune information de signature affichée. La sortie ressemblera à ceci :

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

    Send a message to the future

La commande git log --show-signature est essentielle pour vérifier l'authenticité des commits dans un projet. Lorsque vous travaillez en équipe ou contribuez à des projets open-source, les signatures des commits aident à garantir que les commits que vous examinez ou utilisez proviennent de sources fiables. Sans signatures, il est plus difficile d'être certain de l'origine des modifications.

Dans les étapes suivantes, nous apprendrons comment configurer Git pour signer vos commits et comment vérifier ces signatures.

Utiliser git verify-commit pour vérifier

Dans cette étape, nous allons apprendre à utiliser la commande git verify-commit pour vérifier la signature d'un commit spécifique. Cette commande est utile lorsque vous souhaitez vérifier l'authenticité d'un seul commit plutôt que d'afficher le statut de signature de tous les commits dans le journal.

Tout d'abord, assurez-vous d'être dans le répertoire de votre projet :

cd ~/project/my-time-machine

Pour utiliser git verify-commit, vous avez besoin du hash du commit (l'identifiant unique) du commit que vous souhaitez vérifier. Vous pouvez obtenir ce hash à partir de la sortie de git log. Pour notre premier commit, le hash sera une longue chaîne de caractères. Vous n'avez besoin que des premiers caractères (habituellement 7 suffisent) pour identifier le commit.

Récupérons le hash du commit en utilisant git log --oneline :

git log --oneline

Cela affichera une sortie simplifiée du journal, comme ceci :

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

La partie a1b2c3d est le hash court du commit. Copiez ce hash.

Maintenant, utilisez la commande git verify-commit suivie du hash du commit. Remplacez YOUR_COMMIT_HASH par le véritable hash que vous avez copié :

git verify-commit YOUR_COMMIT_HASH

Étant donné que notre commit n'était pas signé, vous verrez probablement une sortie indiquant qu'il n'y a pas de signature ou que la signature n'a pas pu être vérifiée. C'est normal car nous n'avons pas encore configuré Git pour signer les commits. La sortie pourrait ressembler à ceci :

object YOUR_COMMIT_HASH
type commit
tag -1
tree 8a9b0c1d2e3f4g5h6i7j8k9l0m1n2o3p4q5r6s7t
parent u1v2w3x4y5z6a7b8c9d0e1f2g3h4i5j6k7l8m9n0
author Jane Doe <[email protected]> 1678886400 +0000
committer Jane Doe <[email protected]> 1678886400 +0000

Send a message to the future

La commande git verify-commit est un outil puissant pour examiner les détails d'un commit, y compris son statut de signature. Elle vous aide à confirmer qu'un commit n'a pas été altéré et qu'il provient d'une source fiable, ce qui est crucial pour maintenir l'intégrité de l'historique de votre projet.

Dans l'étape suivante, nous allons créer un nouveau commit et voir comment Git gère les commits non signés lorsque nous essayons de les vérifier.

Tester les commits non signés

Dans cette étape, nous allons créer un autre commit sans signature et observer comment Git le gère lorsque nous utilisons les commandes de vérification que nous avons apprises dans les étapes précédentes. Cela renforcera votre compréhension de la façon dont Git identifie les commits non signés.

Tout d'abord, assurez-vous d'être dans le répertoire de votre projet :

cd ~/project/my-time-machine

Ajoutons une autre ligne à notre fichier message.txt :

echo "This is a second message." >> message.txt

L'opérateur >> ajoute le texte au fichier existant. Maintenant, vérifions le statut :

git status

Vous devriez voir que message.txt a été modifié :

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   message.txt

no changes added to commit (use "git add" and/or "git commit -a")

Maintenant, préparons les modifications et créons un nouveau commit. Nous ne signerons pas ce commit.

git add message.txt
git commit -m "Add a second message"

Vous verrez une sortie confirmant le nouveau commit :

[master a1b2c3d] Add a second message
 1 file changed, 1 insertion(+)

Maintenant que nous avons un deuxième commit non signé, utilisons de nouveau git log --show-signature pour voir l'historique :

git log --show-signature

Vous verrez les deux commits dans le journal. Aucun ne montrera d'informations de signature car nous n'avons pas encore configuré la signature.

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

    Add a second message

commit u1v2w3x4y5z6a7b8c9d0e1f2g3h4i5j6k7l8m9n0
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

Enfin, utilisons git verify-commit sur le nouveau commit. Obtenez le hash court du dernier commit en utilisant git log --oneline et remplacez YOUR_NEW_COMMIT_HASH ci-dessous :

git log --oneline
a1b2c3d (HEAD -> master) Add a second message
u1v2w3x Send a message to the future

Maintenant, vérifions le nouveau commit :

git verify-commit YOUR_NEW_COMMIT_HASH

Encore une fois, la sortie montrera les détails du commit mais aucun statut de vérification de signature, confirmant que ce commit est également non signé.

Cette étape démontre que, par défaut, les commits Git ne sont pas signés. Pour ajouter une couche de sécurité et de confiance, vous devez explicitement configurer Git pour signer vos commits, ce qui est un sujet plus avancé que nous ne couvrirons pas dans ce laboratoire introductif. Cependant, comprendre comment identifier les commits non signés en utilisant git log --show-signature et git verify-commit est la première étape pour travailler avec des commits signés.

Résumé

Dans ce laboratoire, nous avons appris à vérifier si les commits Git sont signés. Nous avons commencé par utiliser la commande git log --show-signature pour afficher le statut de signature de tous les commits de l'historique du projet. Cette commande est essentielle pour évaluer rapidement l'authenticité des commits.

Ensuite, nous avons exploré la commande git verify-commit, qui nous permet de vérifier la signature d'un commit spécifique en utilisant son hash. Cela est utile pour une vérification ciblée. Enfin, nous avons testé des commits non signés pour comprendre à quoi ils ressemblent lors de la vérification des signatures. Ces étapes fournissent une compréhension de base de la façon de vérifier l'authenticité des commits dans Git.