我可以从GitLab.com向GitHub提交拉取请求吗?

我可以从GitLab.com向GitHub提交拉取请求吗?,github,gitlab,pull-request,Github,Gitlab,Pull Request,我们的大部分工作都是在GitLab.com上完成的(即不是本地的GitLab安装)。如果上游回购驻留在GitHub上,是否有方法向上游提交拉取请求?(如果以一种特定的方式分叉上游回购协议是解决方案的一部分,那没关系。)否。正确的工作流应该是将GitHub上的上游项目分叉到您自己的命名空间。然后将fork用作GitLab存储库的上游,而不是fork的来源 然后从GitLab存储库将更改推送到fork(上游)。然后在GitHub上,您可以从您的GitHub fork向源站提交拉取请求。这很奇怪,但我

我们的大部分工作都是在GitLab.com上完成的(即不是本地的GitLab安装)。如果上游回购驻留在GitHub上,是否有方法向上游提交拉取请求?(如果以一种特定的方式分叉上游回购协议是解决方案的一部分,那没关系。)

否。正确的工作流应该是将GitHub上的上游项目分叉到您自己的命名空间。然后将fork用作GitLab存储库的上游,而不是fork的来源


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

这很奇怪,但我就是这样做的

我在上有一个存储库,但我想使用CI,所以我将存储库从Github镜像到Gitlab,然后配置CI等。。。我在网上四处查看,发现使用Gitlab Enterprise,您可以将更改从Gitlab推送到外部存储库,但由于我没有为Gitlab Enterprise付费,我做了以下工作:

因为我们正在使用,而且我们是优秀的程序员,所以我们会努力成为优秀的程序员,让它发挥作用,所以:

我刚刚编辑了GIT URL

怎么样

  • 克隆存储库
  • 转到您的项目
  • 导航到
    .git
    config
    ,您应该有如下内容:

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

然后,使用GitlabURL:

$ git pull origin
由于远程URL已更改,您应该从Gitlab获得更改

  • 再次将远程URL更改回Github
然后推动您的更改:

$ git push origin

你该完蛋了!希望它对你有用,对我有用 不,微软GitHub无法做到这一点

相反,您需要:

  • 创建GitHub存储库
  • 添加GitHub远程服务器:
    • SSH:
      git远程添加git@github.com:org/repo.git
    • HTTPS:
      git远程添加https://github.com/org/repogit
  • git-push-gh-master
  • 从GitHub存储库创建拉取请求

  • 不,github女士不允许,而且可能永远不会

    当然,上游维护人员可以将您的fork添加为远程和cherrypick之类的东西,但这比处理pull请求要复杂得多。因此,很少有维护人员愿意这样做


    另一种方式:所有者在gitlab上镜像他的项目。然后gitlab用户就可以使用它并提交补丁。这也比只在MS github上处理单个项目要复杂得多,而且可能更令人困惑。

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

  • 在Github上,将存储库分叉到您自己的命名空间中
  • 在Gitlab中,使用该实用程序或仅通过从现有回购协议创建来导入项目
  • 在本地存储库中,设置所有三个远程。。。让我们称它们为origin、fork和gitlab。假设原点已经是您的遥控器:
    git远程添加fork my/forked/github/url
    git远程添加gitlab my/gitlab/url
  • 如果要进行更改,请创建一个本地分支,并将gitlab remote设置为远程跟踪分支(继续对此分支进行更改,直到满意为止)。
    git推送-u gitlab我的开发分支
  • 开发完成后,将分支机构推到分叉回购(在Github上)。
    git push-u fork我的开发分支
  • 当您执行此操作时,在控制台输出中,应该有一个链接,用于向新分支发出请求。点击它。默认情况下,这将创建一个以原始回购的主分支为目标的拉取请求。填写它重定向到的页面,你应该完成
    这些请求称为联邦拉/合并请求。两者都有,并计划支持它们,但GitHub从未表示过类似的意图。@StevenRoose一旦他们支持ForgeFed,我期待这个问题有gitlab/gitea的味道:)有趣的方法-我想你可以创建两个命名的遥控器,“GitHub”和“gitlab”,以及
    git pull gitlab
    然后
    git push GitHub