the keys gpg generation failed error data create commits and git version-control git-rebase gnupg

git - keys - ¿Cómo retener la firma gpg de confirmación después del rechazo interactivo?



my gpg key (3)

Cuando quiero aplastar algunas confirmaciones por rebase interactiva:

git rebase -i HEAD~3

Y entonces:

pick cbd03e3 Final commit (signed) s f522f5d bla-bla-bla (signed) s 09a7b7c bla-bla (signed) # Rebase c2e142e..09a7b7c onto c2e142e ...

La confirmación final no tiene gpg-signature a pesar de que todas esas confirmaciones tienen la misma firma. ¿Es posible mantener la firma gpg commit después del squash de rebase interactivo?


Como dijo Cupcake, no puede retener la firma anterior de los compromisos no cortados, pero puede firmar el nuevo compromiso aplastado si realiza un cambio de esta forma:

git rebase --interactive [email protected] HEAD~4

Agregar [email protected] como un argumento firmará la confirmación final aplastada.


No tiene sentido que puedas. El objetivo principal de una firma gpg es verificar que el código no haya sido manipulado. Si pudieras mantener la firma después de modificar el historial, eso anularía todo el propósito.

Actualmente no firmo mi código Git con gpg, por lo que no conozco los detalles exactos, pero supongo que es probable que haga clic en el objeto final de confirmación de un árbol. Cuando te cambies como en tu ejemplo, la Final commit tendrá un ID sha1 diferente, por lo que no es el mismo objeto que antes de la rebase, por lo que tener la misma firma gpg es probablemente imposible, y como dije, no tendría sentido .


Para reforzar el hecho de que no mantiene la firma en las confirmaciones rebasadas, git 2.9.x + (Q3 2016) indicará claramente que un git pull --rebase no verificará la firma (ya que la parte de la rebase las perdería)

Ver commit c57e501 (20 de mayo de 2016) por Alexander Hirsch (``) .
(Fusionada por Junio ​​C Hamano - gitster - in commit 73bc4b4 , 20 de junio de 2016)

pull : advertir en --verify-signatures with --rebase

git-pull ignora silenciosamente la opción --verify-signatures cuando ejecuta --rebase , lo que potencialmente deja a los usuarios en la creencia de que la operación de rebase verificará las firmas GPG válidas.

Se --verify-signatures implementar --verify-signatures para git rebase , pero git rebase dudas sobre un flujo de trabajo válido. Dado que normalmente fusiona las ramas de otros en su sucursal, podría interesarle que su lado tenga una firma GPG válida.

Rebasar , por otro lado, es reconstruir su sucursal sobre el trabajo de otra persona, con el fin de hacer retroceder el resultado, y es demasiado tarde para rechazar su trabajo, incluso si encuentra que sus compromisos carecen de la firma aceptable .

--verify-signatures los usuarios que la opción --verify-signatures se ignora durante " pull --rebase "; los usuarios no se preguntan qué pasaría si sus compromisos no tuvieran una firma aceptable de esa manera .