替换每个提交消息中的电子邮件地址
我最近注意到,我不小心使用了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 "[email protected]";
else
git commit-tree "[email protected]";
fi' HEAD `
如果你是谁犯这个仓库,你可以简单地更新所有的引用不检查旧的内容
git filter-branch -f --env-filter '
GIT_AUTHOR_NAME="Newname"
GIT_AUTHOR_EMAIL="newemail"
GIT_COMMITTER_NAME="Newname"
GIT_COMMITTER_EMAIL="newemail"
' HEAD
然后按照以前使用相同的方法推? – Spookbuster 2015-02-07 18:44:02
最好的办法是删除分支并重新添加它,正如你所说没有其他人正在处理它,所以不会做任何艰难的事情。 – CodeWizard 2015-02-07 18:49:34
强制推送和删除/重新创建有什么区别?是否有一些github功能,它关心的区别? – michas 2015-02-07 20:41:45
更改ONLY用户这将重写提交,这可能会导致已经从存储库中提取并应用本地更改的人员造成混淆。新的提交将与旧的提交不同。如果您想继续使用它,请查看['git filter-branch'](https://www.kernel.org/pub/software/scm/git/docs/git-filter-branch.html )。 – 2015-02-07 18:34:10
https://help.github.com/articles/changing-author-info/ – Joe 2015-02-07 18:35:08
@AndrewC我不想改变提交的作者,我想改变提交信息。 – Spookbuster 2015-02-07 18:39:52