Editar: A partir de la versión 1.7.9 de Git, que es posible firmar confirmaciones Git (git commit -S
). Actualizando ligeramente la respuesta para reflejar esto.
El título de la pregunta es:
¿Hay alguna forma de "autofirmar" confirmaciones en Git con una clave GPG?
Respuesta corta: sí, pero no lo hagas.
Abordar el error tipográfico en la pregunta: git commit -s
no firma el compromiso. Más bien, de la man git-commit
página:
-s, --signoff
Agrega una línea firmada por el confirmador al final del mensaje de registro de confirmación.
Esto proporciona una salida de registro similar a la siguiente:
± $ git log [0:43:31]
commit 155deeaef1896c63519320c7cbaf4691355143f5
Author: User Name
Date: Mon Apr 16 00:43:27 2012 +0200
Added .gitignore
Signed-off-by: User Name
Tenga en cuenta el bit "Firmado por: ..."; que fue generado por la -s
bandera en elgit-commit
.
Citando el correo electrónico de anuncio de lanzamiento :
- "git commit" aprendido "-S" a GPG-firma el commit; Esto se puede mostrar con la opción "--show-signature" para "git log".
Entonces sí, puedes firmar confirmaciones. Sin embargo, personalmente insto a la precaución con esta opción; la firma automática de confirmaciones no tiene sentido, vea a continuación:
Solo una pregunta secundaria, tal vez las confirmaciones no deberían firmarse, solo etiquetas, que nunca creo, ya que envío confirmaciones individuales.
Eso es correcto. Los compromisos no están firmados; las etiquetas son La razón de esto se puede encontrar en este mensaje de Linus Torvalds , cuyo último párrafo dice:
Firmar cada confirmación es totalmente estúpido. Simplemente significa que lo automatizas y haces que la firma valga menos. Tampoco agrega ningún valor real, ya que la forma en que funciona la cadena git DAG de SHA1, solo necesita una
firma para que todas las confirmaciones accesibles desde esa estén efectivamente cubiertas por esa. Por lo tanto, firmar cada confirmación simplemente pierde el punto.
Animaría a examinar el mensaje vinculado, lo que aclara por qué firmar confirmaciones automáticamente no es una buena idea de una manera mucho mejor de lo que podría.
Sin embargo , si desea firmar automáticamente una etiqueta , podrá hacerlo envolviéndola git-tag -[s|u]
en un alias; si va a hacer eso, probablemente desee configurar su identificación de clave ~/.gitconfig
o el .git/config
archivo específico del proyecto . Se puede ver más información sobre ese proceso en el libro de la comunidad de git . Firmar etiquetas es infinitamente más útil que firmar cada confirmación que realice.