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.
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.