如何在git中重命名具有错误作者的提交

如何在git中重命名具有错误作者的提交,git,github,Git,Github,我在一个github项目y中工作了几个月,由于“错误的作者信息”,我所做的大量提交并没有分配给我 是否有一种方法可以循环完成此提交或同时将作者更新到所有提交?他们大多是100岁左右 谢谢 更新: 尝试在git bash上运行脚本时出错: windows cmd上的这个: 有人帮忙吗?我做错了什么?您可以修改提交编辑作者: git commit --amend --author="John Doe <someone@example.com>" git提交--amend--autho

我在一个github项目y中工作了几个月,由于“错误的作者信息”,我所做的大量提交并没有分配给我

是否有一种方法可以循环完成此提交或同时将作者更新到所有提交?他们大多是100岁左右

谢谢

更新: 尝试在git bash上运行脚本时出错:

windows cmd上的这个:
有人帮忙吗?我做错了什么?

您可以修改提交编辑作者:

git commit --amend --author="John Doe <someone@example.com>"
git提交--amend--author=“John Doe”
或者使用交互式重基编辑多个提交。执行git rebase-i HEAD~5,然后标记所有需要编辑的提交,并使用正确的作者字段重新提交,如上面的单个提交示例所示。

您将需要使用筛选器分支

git过滤器分支--提交过滤器'
如果[“$GIT_提交人_名称”=”;
然后
GIT_提交人_NAME=“”;
GIT_AUTHOR_NAME=“”;
GIT_提交人_电子邮件=”;
GIT_AUTHOR_EMAIL=“”;
git提交树“$@”;
其他的
git提交树“$@”;
元首`
如果您是提交到此存储库的唯一用户,则只需更新所有引用,而无需检查旧内容

git过滤器分支-f--env过滤器'
GIT_AUTHOR_NAME=“Newname”
GIT_AUTHOR_EMAIL=“newemail”
GIT_提交人_NAME=“Newname”
GIT\u提交人\u EMAIL=“newemail”
”“头

在任何情况下,您都可以使用
过滤器分支
批量更改多个提交中的电子邮件地址。您需要小心,仅更改您的电子邮件地址,因此使用
--commit filter

$ git filter-branch --commit-filter '
        if [ "$GIT_AUTHOR_EMAIL" = "schacon@localhost" ];
        then
                GIT_AUTHOR_NAME="Scott Chacon";
                GIT_AUTHOR_EMAIL="schacon@example.com";
                git commit-tree "$@";
        else
                git commit-tree "$@";
        fi' HEAD
这将通过并重写每一次提交来获得您的新地址。由于提交包含其父级的SHA-1值,因此此命令会更改历史记录中的每个提交SHA-1,而不仅仅是那些具有匹配电子邮件地址的提交SHA-1


参考资料:

我认为用GIT重写历史是不可能的。@SiKing你认为错了。诚然,这通常是强烈反对的,但这绝对是可能的,甚至没有那么困难。@twalberg-hmm,George Orwell会感到自豪的。。)我想第一个正是我需要的,但我不能运行它!这就是它,但在IF语句中使用“无效电子邮件地址”,对吗?