所以我读了很多关于如何改变以前提交的电子邮件地址,但由于某种原因,我的是不更新.
我确实喜欢用我的本地电子邮件(nameofMyComputer@kevin.local)向我的私人回购提交40次,这很糟糕,因为这个电子邮件与Github没有关联(也不可能)。
然后我想起来我之前需要设置git.config,于是我就这么做了:
git config user.email "newemail@example.com"
然后做了一个测试提交,它运行得很完美。
有没有办法把我以前的所有提交都恢复到这封新邮件中?
我在SO How do I change the author and committer name/email for multiple commits?上读到这个问题并使用了这个
git filter-branch -f --env-filter "
GIT_AUTHOR_EMAIL='newemail@example.com';
GIT_COMMITTER_EMAIL='newemail@example.com';
"
HEAD
但是它不起作用...我仍然可以看到我以前提交的电子邮件,扩展名为.patch作为.local电子邮件地址
3条答案
按热度按时间g6ll5ycj1#
你确实可以像这样一次为许多提交执行他的操作:
我在this answer中做得更好。
qaxu7uf22#
正如您在问题中提到的(您找到的答案的链接),这确实是脚本。
注:
filter-branch
正在执行rebase(将***重写***分支的历史记录),这意味着拥有分支副本的每个人都必须删除并再次 checkout 它。脚本来源于此处-Git-Tools-Rewriting-History:
脚本的作用是什么?
它会遍历你所有的提交,一旦你找到匹配项,它就会替换提交者的名字和电子邮件。
tkqqtvp13#
这里有一个基于Chris Maes' answer的版本,它只对邮件地址匹配的提交进行修改,并使用
rebase --root
(git 1.7起)从历史记录的开头开始写入。如果你想选择一个特定的基本提交,你需要删除
--root
,并使用你想要的refspec。在我自己的回购中使用:
当它看起来正确的时候,你需要强制推送,这将改变提交shas,所以这将导致一大堆其他的问题。