Como Verificar se um Commit Git Está Assinado

GitBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como verificar se um commit Git está assinado. A assinatura de commits é uma prática crucial para verificar a autenticidade e a integridade do histórico do seu projeto.

Através de passos práticos, você explorará como usar o comando git log --show-signature para visualizar informações de assinatura para commits e o comando git verify-commit para verificar a assinatura de um commit específico. Você também aprenderá como testar e identificar commits não assinados, obtendo uma compreensão abrangente de como garantir a confiabilidade do seu repositório Git.

Executar git log --show-signature

Nesta etapa, exploraremos como visualizar as assinaturas de commits usando o comando git log. A assinatura de commits é uma forma de verificar a identidade da pessoa que fez um commit, adicionando uma camada extra de confiança ao histórico do seu projeto.

Primeiramente, navegue até o diretório do seu projeto, caso você ainda não esteja lá. Lembre-se, nosso projeto está localizado em ~/project/my-time-machine.

cd ~/project/my-time-machine

Agora, vamos visualizar o log de commits com a opção --show-signature. Esta opção instrui o Git a exibir informações de assinatura para cada commit, caso existam.

git log --show-signature

Você deve ver o log do seu commit anterior e, como ainda não configuramos a assinatura de commits, você não verá nenhuma informação de assinatura exibida. A saída será semelhante a esta:

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <jane.doe@example.com>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

O comando git log --show-signature é essencial para verificar a autenticidade dos commits em um projeto. Ao trabalhar em equipe ou contribuir para projetos de código aberto, as assinaturas de commits ajudam a garantir que os commits que você está revisando ou usando venham de fontes confiáveis. Sem assinaturas, é mais difícil ter certeza sobre a origem das alterações.

Nas etapas seguintes, aprenderemos como configurar o Git para assinar seus commits e como verificar essas assinaturas.

Usar git verify-commit para Verificar

Nesta etapa, aprenderemos como usar o comando git verify-commit para verificar a assinatura de um commit específico. Este comando é útil quando você deseja verificar a autenticidade de um único commit, em vez de visualizar o status da assinatura de todos os commits no log.

Primeiro, certifique-se de estar no diretório do seu projeto:

cd ~/project/my-time-machine

Para usar git verify-commit, você precisa do hash do commit (o identificador único) do commit que deseja verificar. Você pode obter este hash a partir da saída de git log. Para nosso primeiro commit, o hash será uma longa sequência de caracteres. Você só precisa dos primeiros caracteres (geralmente 7 são suficientes) para identificar o commit.

Vamos obter o hash do commit usando git log --oneline:

git log --oneline

Isso mostrará uma saída de log simplificada, como esta:

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

A parte a1b2c3d é o hash curto do commit. Copie este hash.

Agora, use o comando git verify-commit seguido pelo hash do commit. Substitua YOUR_COMMIT_HASH pelo hash real que você copiou:

git verify-commit YOUR_COMMIT_HASH

Como nosso commit não foi assinado, você provavelmente verá uma saída indicando que não há assinatura ou que a assinatura não pôde ser verificada. Isso é esperado porque ainda não configuramos o Git para assinar commits. A saída pode ser semelhante a esta:

object YOUR_COMMIT_HASH
type commit
tag -1
tree 8a9b0c1d2e3f4g5h6i7j8k9l0m1n2o3p4q5r6s7t
parent u1v2w3x4y5z6a7b8c9d0e1f2g3h4i5j6k7l8m9n0
author Jane Doe <jane.doe@example.com> 1678886400 +0000
committer Jane Doe <jane.doe@example.com> 1678886400 +0000

Send a message to the future

O comando git verify-commit é uma ferramenta poderosa para inspecionar os detalhes de um commit, incluindo seu status de assinatura. Ele ajuda você a confirmar que um commit não foi adulterado e que se origina de uma fonte confiável, o que é crucial para manter a integridade do histórico do seu projeto.

Na próxima etapa, criaremos um novo commit e veremos como o Git lida com commits não assinados quando tentamos verificá-los.

Testar Commits Não Assinados

Nesta etapa, criaremos outro commit sem uma assinatura e observaremos como o Git o trata quando usamos os comandos de verificação que aprendemos nas etapas anteriores. Isso reforçará sua compreensão de como o Git identifica commits não assinados.

Primeiro, certifique-se de estar no diretório do seu projeto:

cd ~/project/my-time-machine

Vamos adicionar outra linha ao nosso arquivo message.txt:

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

O operador >> anexa o texto ao arquivo existente. Agora, vamos verificar o status:

git status

Você deve ver que message.txt foi modificado:

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")

Agora, vamos preparar as alterações e criar um novo commit. Não assinaremos este commit.

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

Você verá a saída confirmando o novo commit:

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

Agora que temos um segundo commit não assinado, vamos usar git log --show-signature novamente para ver o histórico:

git log --show-signature

Você verá ambos os commits no log. Nenhum deles mostrará informações de assinatura porque ainda não configuramos a assinatura.

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <jane.doe@example.com>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Add a second message

commit u1v2w3x4y5z6a7b8c9d0e1f2g3h4i5j6k7l8m9n0
Author: Jane Doe <jane.doe@example.com>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

Finalmente, vamos usar git verify-commit no novo commit. Obtenha o hash curto do commit mais recente usando git log --oneline e substitua YOUR_NEW_COMMIT_HASH abaixo:

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

Agora, verifique o novo commit:

git verify-commit YOUR_NEW_COMMIT_HASH

Novamente, a saída mostrará os detalhes do commit, mas nenhum status de verificação de assinatura, confirmando que este commit também não está assinado.

Esta etapa demonstra que, por padrão, os commits do Git não são assinados. Para adicionar uma camada de segurança e confiança, você precisa configurar explicitamente o Git para assinar seus commits, o que é um tópico mais avançado que não abordaremos neste laboratório introdutório. No entanto, entender como identificar commits não assinados usando git log --show-signature e git verify-commit é o primeiro passo para trabalhar com commits assinados.

Resumo

Neste laboratório, aprendemos como verificar se os commits do Git estão assinados. Começamos usando o comando git log --show-signature para visualizar o status da assinatura de todos os commits no histórico do projeto. Este comando é crucial para avaliar rapidamente a autenticidade dos commits.

Em seguida, exploramos o comando git verify-commit, que nos permite verificar a assinatura de um commit específico usando seu hash. Isso é útil para uma verificação direcionada. Finalmente, testamos commits não assinados para entender como eles aparecem ao verificar as assinaturas. Essas etapas fornecem uma compreensão fundamental de como verificar a autenticidade dos commits no Git.