是否有更好的方法来更新作者电子邮件和整个git存储库的带注释或签名标签的名称?对于提交,我使用git filter-branch和以下脚本
#!/bin/bash
if [ "$GIT_AUTHOR_EMAIL" = "you@example.com" ];
then
GIT_AUTHOR_NAME="My Name";
GIT_AUTHOR_EMAIL="addy@example.com";
git commit-tree "$@";
else
git commit-tree "$@";
fi
和命令
git filter-branch -f \
--tag-name-filter cat \
--commit-filter '/some/path/update_email.sh $@' master
现在,使用--tag-name-filter cat
标志,所有标记都会更新为新提交,但它们包含旧的作者信息。我想要一种自动更新此联系信息的方法。更具体地说,我知道--tag-name-filter
剥离了GPG签名。如果有办法更新签名,那将是理想的。在这种情况下,假设我拥有正在更新的签名的GPG密钥。
答案 0 :(得分:0)
您的命令似乎与this blog post类似,后者提到:
git filter-branch --commit-filter '/path/to/authors.py "$@"' \
--tag-name-filter cat -- --all
但是,一旦完成该过滤器,它也会删除原始引用:
git for-each-ref --format="%(refname)" refs/original/ \
| xargs -n 1 git update-ref -d
也许这是你案件中缺失的一步。
另请参阅BFG之类的工具是否无法在一个命令中处理这两个步骤。