如何合并两个 GitHub 帐户

我有两个 GitHub 帐户,其中一个是很久以前在我工作的地方创建的,用户名是指我工作的公司。

我还有另外一个帐户,那是我的个人 GitHub 帐户,我不能停止使用。

我可以合并这两个帐户,以便我只能在其中一个工作?

63175 次浏览

在 github 不可能合并两个帐户,你可以将所有权转移到你的个人帐户。

goto  >> Setting >>Transfer ownership

详情请浏览: https://help.github.com/articles/merging-multiple-user-accounts/

虽然 Github 概述了一个有限的“ 合并多个用户帐户”过程,这在以前的答案中也提到过,但它并不是一个完整的解决方案。它不解决第三方存储库贡献的所有权问题。

GitHub 将显示来自已删除用户的评论(这将是你根据 GitHub 的帐户合并建议删除的帐户)作为“幽灵”用户的评论——而不会将它们归属于存活的帐户。点击这里查看更多细节:

Https://help.github.com/articles/deleting-your-user-account/

因此,截至2016年11月,实际上没有普遍的办法将 所有的捐款从一个账户完全合并到另一个账户。

回应及更新答案(2019年相关)。

幸运的是,对于 1)转让回购权2)管理(添加/删除/更改)帐户电邮地址3)将历史记录保存/转移到配置文件的贡献图中来说,这是一个相对较快的过程。

传输存储库所有权 只需要几个步骤。

  • 从回购 > 设置页 > 选项 > 滚动到底部,寻找红色的“转移”按钮在“危险区域”
  • 填写所需的字段,键入存储库的名称以确认并输入新所有者的 GH 用户名
  • 新所有者收到一封带有认证令牌的电子邮件,该令牌将在24小时后过期。一定要检查您的帐户转移电子邮件,并按照链接,以完全完成任何回购转移

回购转移之间的帐户包括所有问题,拉请求,叉子,星,以及自动重定向正在为 git 和 http 设置。不过一旦传输完成,您应该更新您的远程原始 URL: git remote set-url origin new_url

Git 提交历史记录、 SAML 和其他项目都与 GitHub 中文件中的电子邮件以及远程本地设置相关联。保持/传输提交历史到贡献图表时,你的 添加原创、创作电子邮件/验证用户帐户,你合并/合并到。

  • 从 GH 仪表板 > 点击你的个人资料照片下拉 > 设置页面
  • 点击左边栏中的 Email > Add email address field > Add new email
  • 检查您的收件箱中的电子邮件地址,您刚刚添加,并点击链接包括。您应该在 GitHub 仪表板上看到一个电子邮件验证确认横幅

先前关于 大部分历史转移的说明是指属于这个历史“灰色地带”的公关和问题,在合并帐户时不会转移。

在您添加电子邮件到 GH 用户帐户 + 验证它,大多数提交历史将转移。允许 GitHub 花一点时间在帐户之间传播历史和贡献。

您将失去提交绑定到原始拉请求和问题的历史绑定到帐户您正在删除。这些“ ... 而是归因于我们的“幽灵”用户一旦帐户被删除,虽然问题/公关本身不会受到影响”(由 GH 支援)。如果你想阅读更多,我为此写了一篇快速博客文章,介绍了转移回购所有权、添加电子邮件等的步骤和视觉效果—— 如何合并/组合两个(或多个) GitHub 用户帐户

GitHub 确实推荐使用一个用户帐户来建立个人和专业(工作)存储库(来源) ,绝对要考虑这样做!

管理多个用户帐户可能很麻烦,尽管有一些方法可以简化多个帐户的工作流程,但是,在这种情况下,这个响应不适合您,您希望保持您的许多帐户的原样,请参阅 如何使用 SSH 密钥管理一台机器上的多个 GH 帐户

GitHub 有一个方便的命令行工具: hub,位于 https://hub.github.com

我已经写了一个例子,将所有回购从你的组织转移到 my_new_organisation_name:

#!/usr/bin/env bash


orgs="$(hub api '/user/orgs' | jq -r '.[] | .login')";
repos="$(for org in $orgs; do hub api '/orgs/'"$org"'/repos' | jq -r '.[] | .name';
done)"


for org in $orgs; do
for repo in $repos; do
( hub api '/repos/'"$org"'/'"$repo"'/transfer'
-F 'new_owner'='my_new_organisation_name' | jq . ) &
done
done

对于用户而不是组织,将 my_new_organisation_name设置为替换用户名,删除外部循环,并将 repos=行替换为:

repos="$(hub api /users/SamuelMarks/repos | jq -r '.[] | .name')"

编辑: 找到一个 GUI,如果你喜欢 https://stackoverflow.com/a/54549899