Git a maintenant la capacité de signer des commits avec git commit -S
, ce qui est génial, mais parfois j'oublie l'indicateur commit
, et parfois je m'envoie des correctifs avec lesquels je postule am
, et cette commande n'a pas d'indicateur de signature.
Est-il possible d'ajouter une signature à un commit déjà enregistré?
git config commit.gpgsign true
.Réponses:
Ajoutez la ligne suivante après chaque commit que vous voulez signer
exec git commit --amend --no-edit -S
Cela exécutera cette commande après avoir sélectionné chaque commit.
MISE À JOUR:
Le moyen le plus simple de le faire est:
Cela rebase tout jusqu'au développement (ou n'importe quel hachage) et vous n'avez pas à copier coller après chaque commit.
la source
resign = "!re() { git rebase --exec 'git commit --amend --no-edit -n -S' -i $1; }; re"
devientgit resign HASH
git commit --amend --no-edit -n -S
.git push --force
?La signature d'un commit modifie son contenu, donc les derniers commits plus récents changeront de hachage.
Si vous voulez juste signer le commit le plus récent,
git commit -S --amend
cela fonctionnera.la source
J'utilise
git rebase -i --root
(voir Historique de réécriture ) et passepick
àedit
.Ensuite, j'utilise
git commit -S --amend --no-edit && git rebase --continue
(sous Windows) pour chaque commet.la source
Je suis également tombé sur le même problème et voici ma solution:
cela signera tous mes commits de la première validation initiale et contournera également le crochet de validation que j'ai configuré avec husky . Pas besoin de changer
pick
pouredit
.la source
Si vous voulez filtrer uniquement des commits spécifiques et les signer, vous pouvez utiliser
filter-branch
:Ceci est utile si, pour une raison quelconque, vous souhaitez signer uniquement vos propres commits.
la source
Si vous devez signer par GPG toutes les validations SINCE d'une validation particulière sur la branche en cours, vous pouvez utiliser les éléments suivants à la place:
git filter-branch --commit-filter 'git commit-tree -S "$@";' <COMMIT>..HEAD
Où se
<COMMIT>
trouve l'id de commit (par exempleabc123e5
).Cela présente l'avantage supplémentaire de ne pas perturber les métadonnées de validation (y compris la date de validation).
Si vous souhaitez également ne plus être invité à saisir votre phrase secrète GPG à chaque commit, consultez également la réponse suivante: https://askubuntu.com/a/805550
NOTE: Le passage de
gpg
lagpg2
pour la signature de GIT vous demandera de réimporter votre clé privée dans GPG 2.la source