繁体   English   中英

从 Gitlab 镜像到 Github

[英]Mirroring from Gitlab to Github

我一直在使用私有 Gitlab 实例来保存我的所有代码。 但是由于大多数与我一起工作的员工现在都有一个 Github 帐户,我真的很想搬家并将我的 Gitlab 存储库镜像到 Github。

我的情况:

  • 运行 Gitlab(综合)的服务器
  • 一个 Github 帐户,我将为该帐户创建一个组织,以便我和我的员工可以一起组织。

我知道 git 中有--mirror开关,但我不确定这是如何工作的。 我在网上找到的文档非常不稳定......所以如果有人可以帮助我,那就太好了。 :)

GitLab 现在有一个从 UI 执行此操作的选项,请转到您的 repo 的 Settings->Repository:

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

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

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

在密码字段中,您必须使用个人访问令牌(因为 GitHub 现在已弃用密码访问),您可以在此处生成: https ://github.com/settings/tokens(不要忘记启用“repo " 和 "工作流" 生成时的权限)

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

git remote set-url --add origin git@github.com:<USERNAME>/<PROJECTNAME>.git

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

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

但是,您可以按照GitHub docs的说明将您的存储库从命令行“导入”到 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

2021 年 8 月 13 日发布仅使用用户名/密码将存储库从 Gitlab 镜像到 Github 将失败,因为我们需要使用 PAT 来执行此操作。

第 1 步:从 Github 创建 PAT:

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

您还应该能够看到您的个人访问令牌。 确保复制它,因为我们将在以下步骤中需要它。

第 2 步:从 Gitlab,转到您希望镜像的仓库:

  • 点击设置。
  • 单击存储库。
  • 单击 Mirror Repo 选项 --> 展开它。
  • 使用以下 URL 作为 Git 存储库 URL: https://<< githubtoken >>@github.com/<< username >>/<< repositoryname >>.git
  • 使用在步骤 1 中创建的令牌用于上面 URL 中的部分。
  • 在不填写密码字段的情况下单击镜像存储库按钮。

如果您更喜欢 SSH 连接而不是 HTTPS 连接 GitLab 到 ZD3B7C913CD04EBFEC0E9EC32CCB6 连接

  • 从您的 GitHub 存储库中复制 SSH 克隆 URL。 (例如git@github.com:yourusername/yourrepositoryname.git
  • 在 GitLab、go 到设置 > 存储库 > 镜像存储库。 在您的存储库页面中。
  • 输入存储库 URL。 不要直接粘贴复制的链接! 将其修改为ssh://git@github.com/yourusername/yourrepositoryname.git
  • Select 认证方法为SSH 公钥。
  • 单击镜像存储库。
  • 添加后,单击存储库链接旁边的“复制 SSH 公钥”按钮。 在此处输入图像描述
  • In GitHub, go to your target repository page and navigate Settings > Deploy keys , click to Add deploy key button and paste your public SSH key which was generated by GitLab.
  • 不要忘记选中允许写访问复选框,因为 GitLab 将需要对镜像的写访问权限。

参考

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM