Git在很久以前的团队回购中更改作者姓名/电子邮件
在我创建这个问题之前,我已经使用Git在很久以前的团队回购中更改作者姓名/电子邮件,git,github,Git,Github,在我创建这个问题之前,我已经使用git filter branch export和git rebase阅读了答案,但它们都不适用于我的情况 所以我加入公司已经3个月了,我在回购协议上的第一个承诺是用计算机名和电子邮件(未知)/something@something)这是唯一一个有这个名字和电子邮件的承诺。现在,当我们在Jenkin设置新工作时,电子邮件开始给我们带来麻烦,它开始向该地址发送电子邮件,这会导致每个人都收到一封退回的电子邮件 我想更改我自己的姓名和电子邮件地址,这样我就可以消除这个问
git filter branch export
和git rebase
阅读了答案,但它们都不适用于我的情况
所以我加入公司已经3个月了,我在回购协议上的第一个承诺是用计算机名和电子邮件(未知)/something@something)这是唯一一个有这个名字和电子邮件的承诺。现在,当我们在Jenkin设置新工作时,电子邮件开始给我们带来麻烦,它开始向该地址发送电子邮件,这会导致每个人都收到一封退回的电子邮件
我想更改我自己的姓名和电子邮件地址,这样我就可以消除这个问题。然而,问题是:
- 这是一个团队回购,我不能使用过滤分支重置所有电子邮件和名称
- 那个提交现在是在头部后面的数千个提交,我不能手动重新设置基础
- 在提交之后,主服务器上有一些活动的分支,它们还没有被合并
git-rebase
。如果有问题的提交发生在分支的当前头
的1000次提交中,那么您应该键入:
git rebase -i HEAD~1000
您可以在提交之前编辑消息,然后继续重新设置基础。重基本身可能没有您想象的那么痛苦,因为您实际上并没有触及代码本身。事实上,其余的999个左右的提交应该完全没有冲突
我真的在寻找一个解决方案,改变作者的姓名和电子邮件的只是具体的提交,也不会影响任何其他人
不幸的是,你不能在不影响其他人的情况下做到这一点。通过更改相关提交的消息,您也在重写历史。这意味着您必须强制将分支推到远程。在这样做的过程中,您可能会放弃或惊讶于当前正在这个分支上工作的所有其他用途
因此,以下是我的建议:
- 让团队在包含坏邮件提交的分支上提交所有工作(并且在您完成下一步之前,他们不得接触分支)
- 然后,您可以拉动分支,执行交互式重基,并强制推送到远程
- 然后团队的其他成员将删除该分支的本地副本(是的,您读对了)
- 最后,团队将从远程服务器中提取已更正的分支
git log
)的程序首先通过commit SHA-1 ID读取提交本身,然后将该ID用作键(部分),以查看是否有人希望对该注释进行其他注释。“其他东西”可以更改,即使SHA-1 ID不能更改
这种方法的问题是,您必须查看辅助数据。如果您使用的是
git log
,默认情况下,它将查找core.notesRef
中列出的注释,这反过来又默认为refs/notes/commits
。如果您正在使用其他内容,谁知道呢?我认为您的解决方案是使用历史记录中的一个提交替换另一个提交
GIT\u提交者\u date=“2000-01-01T12:00:00”GIT提交--date==2000-01-01T12:00:00
)这是我刚才做的最后一个解决方案:
- 让每个在该分支上工作的人提交并将他们的工作合并回该分支
- 将最新提交的副本保存到本地计算机
- 将分支回滚到我要更改信息的提交之前的提交
- 硬拷贝本地副本并覆盖我刚刚回滚到的代码
- 把它作为最新的承诺