我最近注意到,我无意中使用了msysgit中的注销功能,用不正确的电子邮件地址对几次提交进行了签名。不幸的是,我已经将提交推送到了我的GitHub存储库。
是否有任何方法可以从所有提交邮件中删除(或至少替换)不正确的电子邮件地址?我宁愿不留下错误电子邮件的痕迹。
我已经尝试过替换.git目录及其子目录中每个文件中出现的每一个电子邮件地址,并使用git push --force --tags origin 'refs/heads/*'
进行了更改,但似乎不起作用。
注意:我是GitHub存储库的所有者。目前这是一个私人项目;没有其他人在处理它。
您需要使用过滤分支
git filter-branch --commit-filter '
if [ "$GIT_COMMITTER_NAME" = "<Old Name>" ];
then
GIT_COMMITTER_NAME="<New Name>";
GIT_AUTHOR_NAME="<New Name>";
GIT_COMMITTER_EMAIL="<New Email>";
GIT_AUTHOR_EMAIL="<New Email>";
git commit-tree "$@";
else
git commit-tree "$@";
fi' HEAD `
如果您是提交到此存储库的ONLY用户,您可以简单地更新所有引用,而无需检查旧内容
git filter-branch -f --env-filter '
GIT_AUTHOR_NAME="Newname"
GIT_AUTHOR_EMAIL="newemail"
GIT_COMMITTER_NAME="Newname"
GIT_COMMITTER_EMAIL="newemail"
' HEAD