我能否从GitLab.com向GitHub提交pull request?

29

我们大部分的工作都在GitLab.com上进行(即不是本地安装的GitLab)。如果上游仓库位于GitHub上,是否有一种方法可以向上游提交拉取请求? (如果在特定方式下分叉上游仓库是解决方案的一部分,那么可以。)


5
这些被称为联合的拉取/合并请求。GitLab和Gitea都计划支持它们,但GitHub从未表达过类似的意图。 - Steven Roose
@StevenRoose 我期待着一旦GitLab/Gitea支持ForgeFed,这个问题就会有一个相应的味道 :) - lofidevops
5个回答

33

不是。正确的工作流程应该是将上游项目在GitHub上分叉到您自己的命名空间中。然后在您的GitLab存储库中使用您的分支作为上游,而不是您的分支的起源。

从您的GitLab存储库中,您随后将更改推送到您的分支(上游)。然后在GitHub上,您可以从您的GitHub分支向起源提交拉取请求。


1

这很奇怪,但这就是我的做法!

我在Github上有一个代码库,但我想使用Gitlab的CI,所以我将代码库从Github镜像到Gitlab,然后配置了CI等等... 我在网上找到了Gitlab Enterprise的一个功能(the feature),可以从GitLab推送更改到外部代码库,但由于我没有购买Gitlab Enterprise,所以我做了以下操作:

既然我们正在使用GIT,并且我们尝试成为优秀的程序员使其正常工作,因此:

我只是编辑了GIT URL

这样如何?

  • 克隆你的代码库
  • 进入你的项目...
  • 导航到 .git > config,你应该会看到类似这样的内容:

    .git/config file

URLGithub改为Gitlab(我的用户名和项目名称在两个服务中都相同,因此我只更改了URL)。

然后,使用Gitlab URL:

$ git pull origin

由于远程URL已更改,您应该从Gitlab获取更改。

  • 再次将您的远程URL更改回Github

然后推送您的更改:

$ git push origin

你应该完成了!希望它对你有用,它对我有效!


6
有趣的方法——我猜你可以创建两个命名远程仓库,"github"和"gitlab",然后执行 git pull gitlab 再执行 git push github - lofidevops

1
抱歉,微软GitHub无法实现此功能。相反,您需要:
1. 创建一个GitHub存储库。 2. 添加GitHub远程:
- SSH: git remote add gh git@github.com:org/repo.git - HTTPS: git remote add gh https://github.com/org/repogit
3. git push gh master 4. 从您的GitHub存储库创建拉取请求。

0

不,MS GitHub 不允许这样做,而且可能永远都不会。

当然,上游维护者可以将您的 fork 添加为远程,并从中挑选一些内容,但这比处理 pull-request 更麻烦。因此,很少有维护者愿意这样做。

另一种方法:所有者在 GitLab 上镜像他的项目。然后 GitLab 用户可以 fork 该项目并提交补丁。这也比仅在 MS GitHub 上处理单个项目更费力,可能更加混乱。


0

在Kai和christianbundy的回答基础上,我认为最简单的方法是

  1. 在 Github 上将存储库 fork 到您自己的命名空间中。
  2. 在 Gitlab 中,使用 Github import 实用程序导入项目,或通过从现有存储库创建来导入项目。
  3. 在本地存储库中,设置好所有三个远程仓库……让我们称它们为 origin、fork 和 gitlab。假设 origin 已经是您的远程仓库: git remote add fork my/forked/github/url git remote add gitlab my/gitlab/url
  4. 当您想要进行更改时,请创建一个本地分支,并将 gitlab 远程设置为您的远程跟踪分支(继续在此分支上进行更改,直到满意为止)。 git push -u gitlab my-dev-branch
  5. 完成开发后,请将您的分支推送到您的 forked 存储库中(在 Github 上)。 git push -u fork my-dev-branch
  6. 这样做时,在控制台输出中应该有一个链接可以创建一个新分支的拉取请求。点击它。默认情况下,这应该创建一个指向原始存储库的主分支的拉取请求。填写重定向到您的页面,然后您应该就完成了!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接