Skip to content
Latchkey

O que é um commit SHA?

Um commit SHA é o hash único que identifica um commit, derivado de seu conteúdo, de modo que qualquer alteração produz um identificador completamente diferente.

Um commit SHA é a impressão digital do Git para um commit. É um hash longo calculado a partir do conteúdo do commit, incluindo seu parent, então ele nomeia de forma única aquele snapshot exato do histórico. Os SHAs são como o Git, e seu sistema de CI, se referem a commits sem ambiguidade.

Como um SHA é derivado

O Git calcula o hash do conteúdo do commit - sua tree, parent, author e mensagem - em um identificador de comprimento fixo. Como o hash depende de tudo no commit e em sua ancestralidade, alterar qualquer byte do passado gera um SHA inteiramente diferente. É isso que torna o histórico do Git à prova de adulteração.

Usando um SHA

Você pode referenciar um commit por seu SHA completo ou abreviado em qualquer comando.

Referencing commits by SHA
git show a1b2c3d4
git checkout a1b2c3d4e5f6
git log --format="%H"

SHAs completos e curtos

O SHA completo é longo, mas o Git aceita um prefixo curto desde que ele seja único dentro do repositório. SHAs curtos são convenientes para humanos, enquanto SHAs completos são usados onde a precisão absoluta importa, como fixar uma dependência em um commit exato.

Commit SHAs no CI/CD

O CI vincula cada execução de pipeline a um commit SHA específico, então um resultado de build sempre mapeia para o código exato. Fixar actions de terceiros em um SHA completo, em vez de uma tag móvel, é uma prática recomendada de segurança: garante que você executa o código exato revisado e que ele não pode ser silenciosamente alterado sob um nome de tag familiar.

Trabalhando com SHAs

  • Referencie commits por SHA curto quando não houver ambiguidade.
  • Use SHAs completos onde exatidão e segurança importam.
  • Fixe actions do CI em um SHA para evitar mudanças silenciosas na cadeia de suprimentos.
  • Vincule deploys e logs a um SHA para rastreabilidade.

Principais conclusões

  • Um commit SHA é um identificador único derivado do conteúdo de um commit.
  • Qualquer alteração no histórico produz um SHA completamente diferente.
  • Fixar actions do CI em um SHA completo melhora a segurança e a reprodutibilidade.

Guias relacionados