更改GitHub用户名时提交归因?

时间:2020-09-01 15:12:52

标签: git github

我愿意更新GitHub用户名,使其与其他网站和社交媒体更加一致和可识别。

根据GitHub docs

与GitHub提供的noreply电子邮件地址相关联的Git提交不会被归属到您的新用户名,也不会出现在您的贡献图中。如果您的Git提交与您已添加到GitHub帐户的另一个电子邮件地址(包括基于GitHub的GitHub提供的noreply电子邮件地址)相关联,则它们将继续归因于您,并在您完成后显示在您的贡献图中更改了您的用户名。有关设置您的电子邮件地址的更多信息,请参阅“设置您的提交电子邮件地址”。

究竟是什么意思?如果我理解正确,如果我更改了用户名,我的提交将不再归因于我吗? “ noreply电子邮件地址”和“基于ID的noreply电子邮件地址”的正确含义是什么? 如何确定我的提交是否与一个或另一个关联?

换句话说,如何在更改用户名之前检查是否会丢失提交属性?

请注意,我在本地工作,git config --list | grep email给了user.email=<my-real-email>@gmail.com

2 个答案:

答案 0 :(得分:2)

Git要求在author和committer字段的提交中都嵌入一个电子邮件地址。可以通过多种方式设置此值,但通常使用user.email进行设置。但是,由于存在垃圾邮件发送者,所以某些人不想在提交中嵌入真实的电子邮件地址,因此GitHub在域noreply.github.com下提供了一个特殊的电子邮件地址,您可以使用它来代替该域名,并且该地址会自动与您的帐户相关联。如果您在执行基于Web的操作时check the specified option或在user.email中明确设置了此选项,则使用此选项。

假设您使用的电子邮件地址不是GitHub指定的noreply电子邮件地址,则重命名时,所有贡献都将与您的帐户保持关联。您将采用的方式是进入每个仓库并运行git log --format=%ae以查看作者的电子邮件,然后使用grep查找noreply.github.com域。

答案 1 :(得分:1)

其他答案大多可以回答问题,但还有其他考虑。即使您一直在使用GitHub的不答复电子邮件地址,也可以将提交归因于新用户名,具体取决于地址。这些文档中的关键段落如下:

注意::如果您在2017年7月18日之后创建了GitHub帐户,则GitHub提供的no-reply电子邮件地址是一个七位数的ID号,而用户名的形式为{ {1}}。如果您在2017年7月18日之前创建了GitHub帐户,则GitHub提供的ID+username@users.noreply.github.com电子邮件地址就是您的用户名,格式为no-reply。您可以通过在电子邮件设置中选择(或取消选择并重新选择)将我的电子邮件地址设为私有,来获得基于GitHub的GitHub提供的ID的电子邮件地址。

如果您使用GitHub提供的username@users.noreply.github.com电子邮件地址进行提交,然后更改用户名,则这些提交将不会与GitHub帐户相关联。如果您使用的是基于ID的GitHub提供的no-reply地址,则此方法不适用。有关更多信息,请参阅“更改GitHub用户名。”

较旧的无答复地址基于用户名,因此与您的GitHub用户名相关联。如果您的提交使用了这样的地址,那么它们将继续被归因于旧的用户名,而不会切换到您的新用户名。如果以后有人使用旧的用户名,则这些提交将归因于该用户。

自2017年7月18日起,GitHub通过在无回复地址中添加ID 更改了此功能。该ID现在已与您的帐户相关联,并且不与您的用户名关联。如果您具有基于ID的地址,则更改用户名仍会将该地址的所有提交归于您。但是,如果您在发布基于ID的地址之前开始使用GitHub的不答复电子邮件功能,则您将继续使用旧的地址格式,除非您明确地重新选择了该选项,如注释所述。

总而言之,在以下情况下,用户名更改后,提交将继续归因于您的帐户

  1. 提交使用与您的GitHub帐户关联的电子邮件地址
  2. 该提交使用了GitHub提供的基于ID的无回复电子邮件地址
相关问题