将Git存储库从GitHub分支到GitLab

时间:2018-06-21 16:07:00

标签: git github gitlab git-fork

假设我想对其他人的项目实施修复。该项目位于GitHub上。

我可以在GitHub上创建一个fork并实现此修复程序。

但是,我想在GitLab而不是GitHub上创建我的fork。

有可能吗?怎么样?

我已经阅读了这篇文章: https://about.gitlab.com/2016/12/01/how-to-keep-your-fork-up-to-date-with-its-origin/

无论如何,我不确定我该怎么办。

  • 我是否应该以某种方式在GitHub上的项目的GitLab上创建一个fork?
  • 还是应该在GitHub上的项目的GitLab上创建镜像?
  • 还是应该在GitLab上创建一个镜像,然后分叉该镜像?
  • 还是应该做一些完全不同的事情?

正确的方法是什么。

谢谢。

更新

GitLab上的存储库镜像可能没有意义。我可以在GitLab上创建MY GitHub存储库的镜像,但不能创建其他人的存储库的镜像。

https://docs.gitlab.com/ee/workflow/repository_mirroring.html

这是我到目前为止所做的:

我已经将原始GitHub项目克隆到了本地机器上。我已将修复程序提交到本地存储库中的新分支。我在GitLab上创建了一个空项目。我已经将本地存储库中的源设置为GitLab上的那个空项目,并将两个分支都推送到GitLab。我已经在本地存储库中将上游设置为GitHub存储库。

当我想从原始GitHub存储库中获取新的提交到GitLab上的存储库(即同步存储库)时,可以使用本地存储库作为中间步骤来进行此操作。但是,GitHub上的存储库和GitLab上的存储库之间没有直接连接。我的设置正确吗?如果我在GitHub上进行分叉,有什么区别吗?

4 个答案:

答案 0 :(得分:40)

如果您只想跟踪更改,请首先在GitLab(或您可能使用的其他任何工具)中建立一个空的存储库,然后将其克隆到计算机中。

然后使用以下命令将GitHub项目添加为“ upstream”远程对象:

git remote add upstream https://github.com/user/repo

现在,如果有任何更改,您可以从上游获取和提取。 (如果您拥有访问权限,也可以将其推送或合并。)

git pull upstream master

最后,回到您自己的GitLab存储库:

git push origin master

如果您不想手动拉上游/推原点,则GitLab可在设置=>存储库=>镜像存储库中提供镜像功能。

答案 1 :(得分:2)

仅浏览器方式:

  1. 在Gitlab中创建一个新项目(只需一个名称为空的项目即可)
  2. 转到“设置”->“存储库”
  3. 在“镜像存储库”下输入GitHub URL
  4. 确保“镜像方向”为“拉”
  5. 按“镜像存储库”按钮
  6. 按出现的条目旁边的同步图标

答案 2 :(得分:0)

可以分叉私有github存储库。

  1. 点击新项目
  2. 选择导入
  3. 选择github
  4. 用于验证和自动创建gitlab应用的OAuth2
  5. 选择要分叉的项目

^我刚刚在github上的一个私有仓库中完成了此操作,并成功导入了(inc分支等)。导入的项目会自动设为私有;)

答案 3 :(得分:0)

您可以仅使用Web界面导入任何公开可用的GitHub存储库,而无需进行分叉:

  1. 从GitLab仪表板中单击新项目
  2. 切换到导入项目标签
  3. 点击按网址存储按钮
  4. 填写“ Git存储库URL”和其余项目字段
  5. 点击创建项目以开始导入过程
  6. 完成后,您将被重定向到新创建的项目

最近使用了此技术,即使没有GitHub帐户,它也可以在任何公共存储库上使用。请参阅此GitLab docs页面以获取信息来源。