从 Gitlab 镜像到 Github
Posted
技术标签:
【中文标题】从 Gitlab 镜像到 Github【英文标题】:Mirroring from Gitlab to Github 【发布时间】:2015-07-27 21:53:28 【问题描述】:我一直在使用私有 Gitlab 实例来保存我的所有代码。但是由于大多数与我一起工作的员工现在都有一个 Github 帐户,我真的很想搬家并将我的 Gitlab 存储库镜像到 Github。
我的情况:
运行 Gitlab(综合)的服务器 一个 Github 帐户,我将为其创建一个组织,以便我和我的员工可以一起组织。我知道 git 中有 --mirror
开关,但我不确定这是如何工作的。我在网上找到的文档非常不稳定......所以如果有人可以帮助我,那就太好了。 :)
【问题讨论】:
你打算保留你的 Gitlab 实例还是完全迁移到 Github? How to move git repository with all branches from bitbucket to github?的可能重复 Transfer git repositories from GitLab to GitHub - can we, how to and pitfalls (if any)?的可能重复 @MattiVirkkunen 是的。请参阅我对以下答案的评论。 对于相反的问题(从 github 镜像到 gitlab)看这里:serverfault.com/questions/531931/mirror-github-to-gitlab/849151 【参考方案1】:GitLab 现在有一个从 UI 执行此操作的选项,请转到 Settings->Repository of your repo:
https://gitlab.com/yourUserNameInGitLab/yourRepoName/settings/repository
然后找到“镜像存储库”选项并单击展开。您要做的是选择“推送”镜像方向并填写此 URL:
https://yourUserNameInGitHub@github.com/yourUserNameInGitHub/yourRepoName.git
在密码字段中,您必须使用个人访问令牌(因为 GitHub 现在已弃用密码访问),您可以在此处生成:https://github.com/settings/tokens(不要忘记启用“repo”和“workflow”生成时的权限)
【讨论】:
刚刚尝试了双方的私人回购,它对我有用。 ? GitLab 有更详细的说明,包括使用令牌而不是密码 in their docs 除了代码之外,是否可以镜像问题/wiki? 根据文档,如果您有 LFS,这将不起作用。从 Gitlab 文档中,“如果为项目启用 LFS,Git LFS 对象将在拉镜像中同步。它们不会在推送镜像中同步。” 它适用于访问令牌。您必须将访问令牌设置为密码。【参考方案2】:另一种选择是向origin
添加一个额外的 URL:
git remote set-url --add origin git@github.com:<USERNAME>/<PROJECTNAME>.git
当您推送到原点时,它将同时推送到原始原点 (gitlab) 和上面添加的原点 (github)。
【讨论】:
【参考方案3】:This previous *** 问题解决了如何将您的存储库从另一个服务移动到 GitHub,那里的第一个答案解决了如何通过命令行执行此操作,第二个和第三个是更用户友好的方式,不幸的是不适用于你如果你的 GitLab 实例在你的本地服务器上(这似乎是你的情况)。
但是,您可以按照by GitHub docs 的说明将您的存储库从命令行“导入”到 GitHub,这是 GitHub offers this as an alternative 使用其 GitHub Importer 工具的建议方式(在上一个 SO 问题中突出显示)
文档中的一系列步骤:
-
Create a new repository 你想在 GitHub 中推送。
从您的 GitLab 服务器创建一个本地裸克隆:
git clone --bare https://githost.org/extuser/repo.git
裸克隆是完全相同的副本,没有用于编辑文件的工作目录,因此它是一个干净的导出。
进入该目录,然后使用--mirror
标志推送它。 镜像标志确保引用(分支/标签)被复制到 GitHub。
cd *repo.git*
git push --mirror https://github.com/ghuser/repo.git
最后删除您创建的本地存储库。
cd ..
rm -rf repo.git
【讨论】:
我的 Gitlab 服务器实际上是公开的。我想将git.ingwie.me/ingwie/bird3 镜像到 github 组织中。但是由于有功能请求通知等,我只想将其镜像到 github。所以我不想移动,而是镜像。过去甚至还有一个镜像仓库的特殊图标。 @IngwiePhoenix 啊抱歉,你的问题的措辞让很多人认为你想转移。也许编辑特别说你想要一面镜子并保留原件?在任何情况下,请参考:***.com/questions/14288288/…,其中提到了相同的设置,您可以使用 gitlab 监视 github repo 或 webhooks/ post 接收挂钩来自动化它,我认为这就是您想要的。 ***.com/questions/21962872/…以上是关于从 Gitlab 镜像到 Github的主要内容,如果未能解决你的问题,请参考以下文章
gitlab + jenkins + docker + k8s