提问者:小点点

从GitLab镜像到GitHub


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

我的情况:

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

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


共3个答案

匿名用户

GitLab现在可以选择从UI执行此操作,转到设置-

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

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

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

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

匿名用户

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

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

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

匿名用户

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

但是,您可以将您的存储库从命令行“导入”到GitHub,正如GitHub文档所解释的那样,这是建议的方式,因为GitHub提供了这种方式来替代使用他们的GitHub导入器工具(这在前面的SO问题中突出显示)

从留档中采取的步骤:

>

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

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

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

    切换到该目录,然后使用--镜像标志将其推送。镜像标志确保引用(分支/标签)被复制到GitHub。

    cd*repo. git*

    git push镜像https://github.com/ghuser/repo.git

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

    cd…

    rm-rf repo. git