tag tab remove practices commits commands best git sign git-sign

tab - ¿Git firman compromisos previos?



git tags best practices (5)

Me preguntaba cómo firmar ( -s ) las confirmaciones anteriores que hice en el pasado en git?


Para firmar la confirmación anterior, use la opción de modificación:

git commit --amend --signoff


Para mí, solo un signo de admiración, en realidad no verifiqué mis commits en github.

La solución que se trabajó para mí es volver atrás, y luego firmar cada confirmación con -S

git commit --amend -S

Además, si comprueba si su confirmación está realmente firmada y su correo electrónico / nombre simplemente no está adjunto, utilice este comando

git show HEAD --show-signature

Sugerencia adicional: si ya está modificando sus confirmaciones, es posible que desee incluir su nombre real en ellas (consulte el uso de git log ). Puede estar usando su nombre de administrador github, que no es necesario. Solo se necesita un correo electrónico correcto y en el campo del nombre de usuario debe usar su nombre completo y github lo rastreará correctamente con su nombre de administrador github. Para corregir su nombre de usuario y firmar el último compromiso, utilice:

git commit --amend --author="FULL NAME <email>" -S

y también establezca el nombre completo del nombre de usuario en el futuro mediante

git config --global user.name "FULL NAME"


Prueba este para rehacer commits antiguos con un -S :

git filter-branch -f --commit-filter ''git commit-tree -S "$@"'' HEAD

Después de eso, tienes que git push -f . Pero ten cuidado, los identificadores de commit cambiarán y otras personas perderán sincronización.


Teniendo en cuenta las aprobaciones modificar el mensaje de compromiso, utiliza git filter-branch para lograr eso.

git filter-branch --msg-filter / "cat - && echo && echo ''Signed-off-by: Dan McGee <[email protected]>''" / HEAD

(ejemplo de " git filter-branch magic ")

O, siguiendo la suggestion Curt J. Sampson , usando git interpret-trailers :

git config trailer.sign.key "Signed-off-by" git filter-branch --msg-filter / "cat - && echo && git interpret-trailers --trailer ''sign: ''Signed-off-by: Dan McGee <[email protected]>''" / HEAD

advertencia : esto cambiará el SHA1 de sus confirmaciones existentes, y es posible que tenga que forzar el resultado, lo que puede ser problemático si sus compromisos ya han sido compartidos por otros.


Tuve un problema similar. Aquí, gracias a Robin Johnson de Gentoo Linux, es un truco para agregar la firma a todos mis commits anteriores que no se han apilado:

$ git pull && git rebase --gpg-sign --force-rebase origin/master && git push --signed Already up-to-date. Current branch master is up to date, rebase forced. First, rewinding head to replay your work on top of it... Applying: sci-biology/KING: new package Applying: dev-lang/yaggo: version bump, fix install procedure Applying: sci-libs/htslib: version bump Applying: sci-biology/bcftools: version bump Applying: sci-biology/samtools: version bump Applying: sci-biology/libBigWig: new release with io.h renamed to bigWigIO.h Applying: sci-biology/MaSuRCA: add more URLs to HOMEPAGE Applying: sci-biology/SPAdes: update comments on bundled dev-libs/boost Applying: sci-biology/khmer: added a comment how to proceed with src_compile() Applying: sci-biology/picard: version bump Applying: sci-biology/ruffus: pint EGIT_REPO_URI to the archive URL of code.google.com Applying: sci-biology/vcftools: the 0.1.15_pre release was just renamed to 0.1.15 by upstream Applying: sci-biology/nanopolish: new package Applying: sci-biology/libBigWig: version bump Counting objects: 75, done. Delta compression using up to 2 threads. Compressing objects: 100% (75/75), done. Writing objects: 100% (75/75), 14.51 KiB | 0 bytes/s, done. Total 75 (delta 55), reused 0 (delta 0) remote: To github.com:gentoo/sci.git remote: 29c5e3f5d..b37457700 master -> master To git+ssh://git.gentoo.org/proj/sci.git 29c5e3f5d..b37457700 master -> master $