将 Git 存储库从 GitHub 分叉到 GitLab

问题描述 投票:0回答:5

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

我可以在 GitHub 上创建一个分支并实施修复。

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

这可能吗?怎么办?

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

无论如何,我不知道我应该做什么。

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

正确的做法是什么。

谢谢。

更新

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

https://docs.gitlab.com/ee/user/project/repository/mirror/

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

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

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

git github gitlab git-fork
5个回答
284
投票

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

然后将 GitHub 项目添加为“upstream”远程:

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

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

git pull upstream master

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

git push origin master

如果您不想手动拉取上游/推送源,GitLab 在 Settings => Repository => Mirroring repositories 中提供了镜像功能。


29
投票

仅浏览器方式:

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

15
投票

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

  1. 在 GitLab 仪表板上单击 新项目
  2. 切换到导入项目选项卡
  3. 单击通过 URL 进行存储按钮
  4. 填写“Git 存储库 URL”和其余项目字段
  5. 单击创建项目开始导入过程
  6. 完成后,您将被重定向到新创建的项目

最近使用了这种技术,即使没有 GitHub 帐户,它也适用于任何公共存储库。请参阅此 GitLab 文档 页面以获取信息来源。


2
投票

可以分叉私有 github 存储库。

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

^ 我刚刚使用 github 上的私人存储库完成了此操作,已成功导入(包括分支等)。导入的项目会自动保密;)


0
投票

这已经为我解决了。不是直接分叉,但所有分支和提交都被推送。

git push --set-upstream git@<<yourgitlabpath>>$(git rev-parse --show-toplevel | xargs basename).git $(git rev-parse --abbrev-ref HEAD)
© www.soinside.com 2019 - 2024. All rights reserved.