Firmar un compromiso existente con GPG

2 minutos de lectura

Estoy buscando una manera de replicar lo que git commit -S pero en un compromiso específico, dando su SHA por ejemplo.

¿Es posible?

avatar de usuario
bitoiu

La firma de una confirmación cambiará los metadatos de confirmación y, por lo tanto, cambiará el ID de confirmación SHA1 subyacente. Como probablemente sepa, para Git, esto tiene la misma consecuencia de intentar cambiar el contenido de su historial.

Si solo desea volver a firmar su último compromiso, puede ejecutar:

git commit -S --amend

Si desea volver a firmar un compromiso en medio de su historial, puede hacer un par de cosas, todas ellas un poco desagradables si me pregunta:

  1. Tú podrías reset --soft a la confirmación que desea firmar. Correr git commit -S --amend y luego confirme todos los cambios por etapas. Esto sería unir todo tu historial después de ese compromiso en un solo compromiso
  2. Ramifica (por seguridad) y reset --hard a la confirmación que desea firmar. Fírmalo, y si quieres conservar el historial de confirmaciones, ahora puedes git cherry-pick NEXTCOMMIT -S para reconstruir toda la historia firmada.

  • yo estaba usando --amend -S para mi última confirmación, pero no pude hacer lo mismo en el historial. Genial, gracias @bitoiu

    – chalasr

    10 de junio de 2016 a las 8:24

Si desea firmar todas las confirmaciones existentes en la rama sin realizar ningún cambio en ellas:

git rebase --exec 'git commit --amend --no-edit -n -S' -i origin/HEAD

  • yo obtengo fatal: invalid upstream 'origin/HEAD'

    – Kris

    8 de marzo a las 10:13

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad