从Gitlab镜像到Github

Ing*_*nix 15 git github mirror gitlab

我一直在使用私有Gitlab实例来保存我的所有代码.但由于与我合作的大多数员工现在都有一个Github帐户,我真的很想移动并将我的Gitlab回购镜像给Github.

我的情况:

  • 运行Gitlab的服务器(Omnibus)
  • 一个Github帐户,我将为其创建一个组织,以便我和我的员工一起组织.

我知道--mirrorgit 中有切换,但我不确定这是如何工作的.我在网上找到的文档非常糟糕......所以如果有人可以帮助我,那就太好了.:)

ali*_*an7 15

如果您更喜欢使用 SSH 连接而不是 HTTPS 连接来进行 GitLab 到 GitHub 镜像:

  • 从 GitHub 存储库复制 SSH 克隆 URL。(例如git@github.com:yourusername/yourrepositoryname.git
  • 在 GitLab 中,转到设置 > 存储库 > 镜像存储库。在您的存储库页面中。
  • 输入存储库 URL。不要直接粘贴复制的链接!修改它就像ssh://git@github.com/yourusername/yourrepositoryname.git
  • 选择身份验证方法作为SSH 公钥。
  • 单击镜像存储库。
  • 添加后,单击存储库链接旁边的“复制 SSH 公钥”按钮。在此输入图像描述
  • 在 GitHub 中,转到目标存储库页面并导航设置 > 部署密钥,单击添加部署密钥按钮并粘贴由 GitLab 生成的公共 SSH 密钥。
  • 不要忘记选中 “允许写入访问”复选框,因为 GitLab 需要对镜像进行写入访问。

参考

  • 经过几个小时的尝试,我认为这个功能已经被破坏了。没有其他人提到需要将 SSH 密钥添加为**部署密钥**(每个项目级别),而不是作为常规 SSH 密钥(每个用户级别)。 (3认同)

Kri*_*ris 12

另一种选择是向 中添加一个额外的 URL origin

git remote set-url --add origin git@github.com:<USERNAME>/<PROJECTNAME>.git
Run Code Online (Sandbox Code Playgroud)

当您推送到原点时,它将同时推送到原始原点 (gitlab) 和上面添加的原点 (github)。


mat*_*aly 11

这个之前的StackOverflow问题解决了如何将您的存储库从另一个服务移动到GitHub,第一个答案解决了如何通过命令行执行此操作,第二个和第三个是更加用户友好的方式,遗憾的是,如果您的GitLab实例位于您的本地服务器上(这似乎是您的情况).

然而,您可以将命令行中的存储库"导入"到GitHub,如GitHub文档所述,这是建议的方式,因为GitHub 提供此方法作为使用其GitHub Importer工具的替代方法(在之前的SO问题中突出显示)

从文档中删除的步骤:

  1. 在GitHub中创建要推送到的新存储库.
  2. 从您的GitLab服务器创建一个本地裸克隆:

    git clone --bare https://githost.org/extuser/repo.git

裸克隆是完全重复的,没有用于编辑文件的工作目录,因此它是一个干净的导出.

  1. 切换到该目录,然后使用--mirror标志推送它.镜像标志确保将引用(分支/标记)复制到GitHub.

    cd *repo.git*

    git push --mirror https://github.com/ghuser/repo.git

  2. 最后删除您创建的本地存储库.

    cd ..

    rm -rf repo.git

  • 我的Gitlab服务器实际上是公共的。我想将http://git.ingwie.me/ingwie/bird3镜像到github组织中。但是由于功能请求通知之类的东西在那里,我只想将其镜像到github。所以我不想动,而是想镜子。镜像仓库也曾经有一个特殊的图标。 (2认同)

kno*_*cte 7

manbetx客户端打不开现在有一个选项可以从用户界面中执行此操作,转到回购的设置->存储库:

https://gitlab.com/yourUserNameInGitLab/yourRepoName/settings/repository

然后找到选项“镜像存储库”,然后单击展开。您要做的是选择“推”镜像方向并填写以下URL:

https://yourUserNameInGitHub@github.com/yourUserNameInGitHub/yourRepoName.git

  • GitLab 有更详细的说明,包括使用令牌而不是密码[在他们的文档中](http://repositories.compbio.cs.cmu.edu/help/workflow/repository_mirroring.md#setting-up-a-mirror-from -gitlab-to-github) (4认同)
  • 刚刚在双方的私人回购上尝试过,它对我有用。 (3认同)
  • 它与访问令牌一起使用。您必须将访问令牌设置为密码。 (3认同)
  • @alfC - 我的用户帐户配置了 2FA 并且访问令牌有效。我正在为我的组织推动一个回购协议。附言。GitLab 应该在他们的镜像配置页面上链接到这个答案!这个解释比文档好得多。谢谢诺克特。 (3认同)

Ame*_*raJ 5

2021 年 8 月 13 日发布仅使用用户名/密码将存储库从 GitLab 镜像到 GitHub 将失败,因为我们需要使用个人访问令牌 (PAT) 来执行此操作。

第 1 步:从 GitHub 创建 PAT:

  • 单击右上角您的 GitHub 个人资料图标
  • 单击设置
  • 从左侧显示的菜单中,单击开发者设置
  • 单击个人访问令牌
  • 单击生成新令牌
  • 添加注释以帮助您确定要生成的访问令牌的范围
  • 从下拉菜单中选择过期期限(理想情况下,您应该避免选择无过期选项)
  • 最后,选择您想要授予对生成的访问令牌的相应访问权限的范围。确保选择所需的最小范围,否则您在执行某些 Git 操作时仍然会遇到问题。
  • 最后点击生成令牌。

您还应该能够看到您的个人访问令牌。请务必复制它,因为我们在后续步骤中将需要它。

第 2 步:从 GitLab 转到您想要镜像的存储库:

  • 单击“设置”。
  • 单击存储库。
  • 单击 Mirror Repo 选项 --> 展开它。
  • 使用以下 url 作为 Git 存储库 URL: https://<< githubtoken >>@github.com/<<用户名>>/<<存储库名称>>.git
  • 使用在步骤 1 中创建的令牌在上面的 URL 部分中使用。
  • 单击“镜像存储库”按钮,无需填写密码字段。