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
paragit rebase
, perogit 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 .