【问题标题】:How to merge two GitHub accounts如何合并两个 GitHub 帐户
【发布时间】:2016-10-08 04:13:28
【问题描述】:

我有两个 GitHub 帐户,其中一个是很久以前在我的工作中创建的,并且有一个代表我工作的公司的用户名。

我有另一个帐户,这是我无法停止使用的个人 GitHub 帐户。

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

【问题讨论】:

标签: git github


【解决方案1】:

在 github 上无法合并 2 个帐户,您可以将所有权转移到您的个人帐户。

goto  >> Setting >>Transfer ownership 

更多详情:https://help.github.com/articles/merging-multiple-user-accounts/

【讨论】:

  • 嗨@RodrigoCurbelo,如果这个答案已经解决了您的问题,请通过单击复选标记考虑accepting。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
  • 但是,如果我将工作帐户中所有的所有权转移到我的个人帐户中,那么所有日志(如提交、拉取请求、问题等)都会在我的个人帐户下吗?而且,我会自动访问我公司的私人组织吗?我究竟会失去什么?
  • 我的意思是,我在公司帐户中可以访问的 repos 不是我创建的,我只是那里的合作者...我的个人帐户中会得到完全相同的结果吗?
  • 嗨 MohammadFarad - 我不知道你是否仍然在线并检查 SO - 但如果是这样,我相信现在(五年后,在 2021 年!)这个公认的答案已成为误导,鉴于@ScottMathson 对您可以做什么的详细回答——几乎所有您想做的事情! - 以下。我想知道你是否有时间添加它的链接——当然,如果你同意我的话!非常感谢。
【解决方案2】:

在此处回复更新的答案(与 2019 年相关)。

幸运的是,1) 转让回购所有权2) 管理(添加/删除/更改)帐户电子邮件地址3是一个相对较快的过程) 将大多数提交历史保存/转移到配置文件的贡献图

转移存储库所有权只需要几个步骤。

  • 从回购>设置页面>选项>滚动到底部,在“危险区域”内寻找红色的“转移”按钮
  • 填写必填字段,输入存储库名称以确认并输入新所有者的 GH 用户名
  • 新所有者收到一封电子邮件,其中包含 24 小时后过期的身份验证令牌。请务必检查您要转移到的帐户的电子邮件,并点击链接以完全完成任何回购转移

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

Git 提交历史、SAML 和其他项目与您在 GitHub 和远程本地设置中存档的电子邮件相关联。当您在您要合并/合并的用户帐户上添加原始、创作电子邮件/验证它时,会将提交历史记录保存/转移到贡献图。

  • 从 GH 仪表板 > 点击您的个人资料照片下拉菜单 > 设置页面
  • 点击左侧边栏中的电子邮件 > 添加电子邮件地址字段 > 添加新电子邮件
  • 检查您刚刚添加的电子邮件地址的收件箱,然后单击包含的链接。您应该登陆您的 GitHub 仪表板,看到电子邮件验证确认横幅

之前关于大部分历史转移的说明是指PR和属于历史“灰色区域”的问题,在合并帐户时不会转移。

在您将电子邮件添加到 GH 用户帐户并对其进行验证后,大部分提交历史都会转移。给 GitHub 一点时间来传播帐户之间的历史记录和贡献。

您将丢失与原始拉取请求相关的提交以及与您要删除的帐户相关的问题历史记录。这些“...一旦帐户被删除,就会归于我们的“Ghost”用户,尽管问题/PR 本身不会受到影响。” (来自 GH 支持)。如果您想了解更多信息,我为此写了一篇简短的博客文章,其中包含有关转移回购所有权、添加电子邮件等的步骤和视觉效果 - how to merge/combine two (or many) GitHub user accounts

GitHub 确实建议将一个用户帐户用于个人和专业(工作)存储库 (source),一定要考虑这样做!

管理多个用户帐户可能很麻烦,尽管有一些方法可以简化多个帐户的工作流程,所以如果此响应不适合您并且您希望保持多个帐户不变,请参阅 @987654323 @。

【讨论】:

  • 您应该明确指出您发布的链接是您自己的。
  • 试图说明这一点,@Jean-FrançoisFabre “如果您想了解更多信息,我为此写了一篇简短的博客文章,其中包含步骤和有关转让回购所有权、添加电子邮件等的视觉效果......”。不过,感谢您的反馈,我是新来这里贡献的! :)
  • 正确。这个答案被机器人检测到,因为它有一个自我推销模式,因为链接匹配你的用户名。不过没关系。
  • @ScottMathson 我的 GitHub 工作帐户在我公司拥有的存储库中进行了提交。我也可以将这些提交的历史记录转移到我的个人帐户吗?
  • 当我尝试添加第二个帐户的电子邮件时,我收到“电子邮件已在使用中”。知道我可能做错了什么吗?
【解决方案3】:

虽然 Github 概述了一个有限的“Merging multiple user accounts”流程,在之前的答案中也提到过,但这并不是一个完整的解决方案。它不解决第三方存储库贡献的所有权。

GitHub 会将来自已删除用户(这将是您按照 GitHub 的帐户合并建议删除的帐户)的 cmets 显示为“幽灵”用户的 cmets - 而不会将它们归属于幸存的帐户。在此处查看更多详细信息:

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

因此,实际上,截至 2016 年 11 月,没有通用方法可以将一个帐户的所有贡献完全合并到另一个帐户。

【讨论】:

  • 接受的答案不再是真正正确的,因为“合并”不存在并且还假设您拥有存储库。但是,如果您有一个工作帐户并希望将其合并到您的个人帐户,以便跟踪您的私人提交。
【解决方案4】:

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

我编写了一个示例,将所有组织的所有 repos 移至 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')"

编辑:如果您喜欢https://stackoverflow.com/a/54549899,请找到GUI

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-09
    • 2016-12-08
    • 2018-03-11
    • 2019-07-10
    • 1970-01-01
    • 2022-11-11
    • 2020-05-28
    • 2021-04-29
    相关资源
    最近更新 更多