【发布时间】:2020-10-18 01:34:01
【问题描述】:
我在 GitHub 上有几个存储库,我一直在使用 GnuPG 进行签名提交。我丢失了用于 GPG 签名的私钥和公钥,因此我创建了一个新的密钥对,但错误地覆盖了我以前的公钥,而不是向 GitHub 添加新的公钥。
我尝试在 Git Bash 中运行以下命令,但这改变了提交哈希,这破坏了我的标签。
git filter-branch --commit-filter '
if [ "$GIT_COMMITTER_EMAIL" = "MY EMAIL" ];
then
GIT_COMMITTER_NAME="MY NAME";
GIT_AUTHOR_NAME="MY NAME";
GIT_COMMITTER_EMAIL="MY EMAIL";
GIT_AUTHOR_EMAIL="MY EMAIL";
git commit-tree -S "$@";
else
git commit-tree "$@";
fi' HEAD
git push --force
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
我最终从 reflog 中重置以撤消这些更改。
我主要想确保这不是针对多个存储库和多个提交/标签的手动工作。因此,我对任何可以修复先前提交的签名同时仍链接到标签的解决方案感到满意。
【问题讨论】: