Saltar al contenido

gpg no pudo firmar los datos fatal: no se pudo escribir el objeto de confirmación [Git 2.10.0]

Entiende el código de forma correcta previamente a adaptarlo a tu trabajo y si ttienes algo que aportar puedes dejarlo en los comentarios.

Solución:

Me encontré con este problema con OSX.

Respuesta original:

Parece que una actualización de gpg (de brew) cambió a la ubicación de gpg a gpg1puede cambiar el binario donde git busca el gpg:

git config --global gpg.program gpg1

Si no tienes gpg1: brew install gpg1.

Respuesta actualizada:

Parece que gpg1 está en desuso/”retirado suavemente del uso”, por lo que probablemente debería actualizar a gpg2, desafortunadamente esto implica algunos pasos más/un poco de tiempo:

brew upgrade gnupg  # This has a make step which takes a while
brew link --overwrite gnupg
brew install pinentry-mac
echo "pinentry-program /usr/local/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf
killall gpg-agent

La primera parte instala gpg2, y la última es un truco necesario para usarlo. Para solucionar problemas, consulte esta respuesta (aunque se trata de Linux, no de preparación), sugiere una buena prueba:

echo "test" | gpg --clearsign  # on linux it's gpg2 but brew stays as gpg

Si esta prueba es exitosa (ningún error/la salida incluye la firma PGP), se ha actualizado con éxito a la última versión de gpg.

¡Ahora debería poder usar la firma de git nuevamente!
Vale la pena señalar que necesitará tener:

git config --global gpg.program gpg  # perhaps you had this already? On linux maybe gpg2
git config --global commit.gpgsign true  # if you want to sign every commit

Nota: Después de ejecutar una confirmación firmada, puede verificar que esté firmada con:

git log --show-signature -1

que incluirá información de gpg para la última confirmación.

Si se utilizan gnupg2 y gpg-agent 2.x, asegúrese de establecer la variable de entorno GPG_TTY.

export GPG_TTY=$(tty)

Consulte la documentación de GPG sobre problemas comunes.

Si todo falla, utilice GIT_TRACE=1 para probar y ver lo que git realmente está haciendo:

$ GIT_TRACE=1 git commit -m "Add page that always requires a logged-in user"
20:52:58.902766 git.c:328               trace: built-in: git 'commit' '-vvv' '-m' 'Add page that always requires a logged-in user'
20:52:58.918467 run-command.c:626       trace: run_command: 'gpg' '--status-fd=2' '-bsau' '23810377252EF4C2'
error: gpg failed to sign the data
fatal: failed to write commit object

Ahora ejecute el comando fallido manualmente:

$ gpg -bsau 23810377252EF4C2
gpg: skipped "23810377252EF4C2": Unusable secret key
gpg: signing failed: Unusable secret key

resulta que mi key estaba caducado, git no tuvo la culpa.

Comentarios y puntuaciones

Te invitamos a estimular nuestro estudio mostrando un comentario o valorándolo te estamos eternamente agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *