从GitLab到GitHub的镜像

yyhrrdl8  于 2023-01-19  发布在  Git
关注(0)|答案(5)|浏览(249)

我一直使用一个私有的GitLab示例来保存我所有的代码,但是现在大多数和我一起工作的员工都有一个GitHub账户,我真的很想开始行动,把我的Gitlab repo镜像到Github上。
我的情况:

  • 运行Gitlab(Omnibus)的服务器
  • 一个Github账户,我将创建一个组织,我和我的员工可以组织在一起。

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

93ze6v8z

93ze6v8z1#

GitLab现在有一个选项可以从用户界面完成这个操作,请进入设置-〉存储库:
https://gitlab.com/yourUserNameInGitLab/yourRepoName/settings/repository
然后找到“镜像存储库”选项,点击展开,你要做的就是选择“推送”镜像方向,并填写以下URL:
https://yourUserNameInGitHub@github.com/yourUserNameInGitHub/yourRepoName.git
在密码字段中,您必须使用个人访问令牌(因为GitHub现在已经弃用密码访问),您可以在这里生成:https://github.com/settings/tokens(生成时别忘了启用“repo”和“workflow”权限)

ct3nt3jp

ct3nt3jp2#

另一个选项是向origin添加额外的URL:

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

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

siotufzp

siotufzp3#

This previous StackOverflow问题解决了如何将仓库从另一个服务转移到GitHub,第一个答案解决了如何通过命令行完成,第二个和第三个是更用户友好的方法,不幸的是,如果您的GitLab示例在本地服务器上,这对您不起作用(似乎是您的情况)。
但是你可以像by GitHub docs解释的那样从命令行“导入”你的仓库到GitHub,这是GitHub offers this as an alternative使用他们的GitHub导入器工具的建议方法(在前面的SO问题中突出显示)
从文档中获取的步骤的运行:
1.您想在GitHub中推送到的Create a new repository
1.从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
1.最后删除您创建的本地存储库。
cd ..
rm -rf repo.git

deyfvvtc

deyfvvtc4#

Post Aug 13,2021仅使用用户名/密码将repo从GitLab镜像到GitHub将失败,因为我们需要使用个人访问令牌(PAT)来执行此操作。
步骤1:从GitHub创建PAT:

  • 点击右上角的GitHub个人资料图标
  • 单击设置
  • 从左侧显示的菜单中,单击“开发人员设置
  • 单击个人访问令牌
  • 单击生成新令牌
  • 添加注解,以帮助您确定要生成的访问令牌的范围
  • 从下拉菜单中选择到期期限(理想情况下,应避免选择无到期选项)
  • 最后,选择要授予生成的访问令牌相应访问权限的作用域。请确保选择所需的最小作用域,否则在执行某些Git操作时仍会遇到问题。
  • 最后单击生成令牌。
    您还应该能够看到您的个人访问令牌。请确保复制它,因为我们在以下步骤中需要它。
    第2步:从GitLab,转到您希望镜像的存储库:
  • 单击设置。
  • 单击存储库。
  • 单击镜像存储库选项--〉展开它。
  • 使用以下URL作为Git存储库URL:https://〈〈githubtoken〉〉@github.com/〈〈 用户名 〉〉/〈〈 存储库名称 〉〉.git
  • 使用在步骤1中创建的令牌在上述URL中的部件中使用。
  • 单击“镜像存储库”按钮,但不填写密码字段。
ua4mk5z4

ua4mk5z45#

对于GitLab到GitHub镜像,如果您更喜欢SSH连接而不是HTTPS连接:

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

参考文献

相关问题