Para usar uma chave GPG como padrão para assinar commits do Git, siga estes passos:

1. Liste suas chaves e identifique o ID

Uma chave GPG pública não é suficiente para assinar — você precisa ter também a chave privada correspondente. Por isso, liste as chaves secretas (não apenas gpg --list-keys), já usando a forma longa do ID:

gpg --list-secret-keys --keyid-format=long

Linux

Algumas instalações de GPG no Linux exigem gpg2 em vez de gpg:

gpg2 --list-keys --keyid-format LONG

Nesse caso, configure também o Git para usar o gpg2:

git config --global gpg.program gpg2

A saída se parece com isto:

$ gpg --list-secret-keys --keyid-format=long
/Users/hubot/.gnupg/secring.gpg
------------------------------------
sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
uid                          Hubot <hubot@example.com>
ssb   4096R/4BB6D45482678BE3 2016-03-10
  • sec → chave primária. Nesse exemplo, o ID longo é 3AA5C34371567BD2.
  • ssb → subchave (subkey). Nesse exemplo, o ID longo é 4BB6D45482678BE3.

Copie o ID de 16 caracteres hexadecimais (forma longa) da chave — ou subchave — que você quer usar para assinar. Esse é o ID usado no passo 2.

Por que --keyid-format=long?

Sem essa flag o gpg mostra só os últimos 8 caracteres do ID, que têm mais chance de colidir com o ID de outra chave. Use sempre a forma longa.

2. Configure o Git para usar essa chave

Se você tiver múltiplas chaves GPG, é necessário informar ao Git qual delas usar. Cole o comando abaixo substituindo <key-id> pelo ID copiado no passo anterior:

git config --global user.signingkey <key-id>

Exemplo, usando a chave primária do exemplo acima:

git config --global user.signingkey 3AA5C34371567BD2

Também é possível usar diretamente uma subchave:

git config --global user.signingkey 4BB6D45482678BE3

Marcando uma chave como preferida

Se você usa várias chaves/subchaves, anexe ! ao final do ID para dizer ao Git qual é a preferida (às vezes é preciso escapar com \!):

git config --global user.signingkey 3AA5C34371567BD2!

Trocando de formato de assinatura

Se você já tinha configurado o Git para assinar com outro formato (ex.: SSH, via --gpg-sign), remova a configuração antiga para voltar ao padrão openpgp do GPG:

git config --global --unset gpg.format

3. Habilite a assinatura de commits por padrão

Para assinar automaticamente todos os commits, execute:

git config --global commit.gpgsign true

Isso fará com que o Git assine cada commit sem precisar usar a flag -S manualmente.

4. (Opcional) Habilite a assinatura de tags por padrão

git config --global tag.gpgSign true

5. Faça commits

Agora os commits serão assinados automaticamente. Se preferir assinar manualmente, use:

git commit -S -m "Sua mensagem de commit"

6. Cache da senha (passphrase)

Se sua chave GPG tiver uma senha, considere usar um agente GPG ou ferramentas específicas do sistema operacional (como GPG Suite no macOS ou Gpg4win no Windows) para armazenar a senha em cache e evitar solicitações repetidas.

No macOS/Linux, também é comum expor a variável GPG_TTY no shell, para que o gpg consiga pedir a senha no terminal correto:

export GPG_TTY=$(tty)

Adicione essa linha ao ~/.zshrc/~/.zprofile (zsh) ou ~/.bash_profile/~/.bashrc (bash) para que valha em todas as sessões.

7. Verifique os commits assinados

Você pode verificar as assinaturas dos commits com:

git log --show-signature

Essa configuração garante que o Git use sempre a chave GPG especificada para assinar commits por padrão.

Outros métodos de assinatura

Além de GPG, o Git também aceita assinar commits/tags com chave SSH (git config --global gpg.format ssh) ou certificado X.509 via smimesign. Ver a fonte oficial abaixo para detalhes.


Gerado via Perplexity AI, revisado e ampliado (passos 1 e 2) com base na documentação oficial do GitHub. Fontes:

  1. Informar ao Git sobre a chave de assinatura — GitHub Docs (pt-br)
  2. https://stackoverflow.com/questions/10161198/is-there-a-way-to-autosign-commits-in-git-with-a-gpg-key
  3. Assinar commits — GitHub Docs
  4. https://docs.github.com/en/enterprise-cloud@latest/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key?platform=windows
  5. https://docs.gitlab.com/user/project/repository/signed_commits/gpg/
  6. https://docs.github.com/en/enterprise-server@3.16/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key
  7. https://git-scm.com/book/pt-br/v2/Git-Tools-Signing-Your-Work
  8. https://docs.github.com/en/enterprise-server@3.5/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key
  9. https://dev.to/codedir/using-existing-gpg-key-to-sign-git-commits-5181
  10. https://graphite.dev/guides/using-gpg-keys-git-commit-signatures