我可以提交从 GitLab.com 到 GitHub 的拉取请求吗?
Can I submit a pull request from GitLab.com to GitHub?
我们的大部分工作发生在 GitLab.com 上(即不是本地 GitLab 安装)。如果上游 repo 驻留在 GitHub,有没有办法向上游提交拉取请求? (如果以特定方式分叉上游存储库是解决方案的一部分,那没关系。)
没有。正确的工作流程是将 GitHub 上的上游项目分叉到您自己的命名空间。然后在你的 GitLab 存储库中使用你的 fork 作为上游,而不是你的 fork 的来源。
然后从您的 GitLab 存储库将更改推送到您的分支(上游)。然后在 GitHub 上,你可以从你的 GitHub 分支提交一个 pull request 到 origin。
这很奇怪,但我就是这样做的!
我在 Github but I wanted to use the Gitlab CI, so I mirrored the repository from Github to Gitlab, then I configured the CI etc... I was looking around online, and I found that with Gitlab Enterprise you have the feature 上有一个存储库,用于将更改从 GitLab 推送到外部存储库,但由于我不为 Gitlab Enterprise 付费,我做了以下操作:
由于我们正在使用 GIT,并且我们 是优秀的程序员 努力成为优秀的程序员使其发挥作用,所以:
我刚刚编辑了 GIT URL
感觉如何?
- 克隆你的存储库
- 转到您的项目...
导航到 .git
> config
你应该有这样的东西:
将URL从Github更改为Gitlab (我在两个服务中都有相同的用户名和项目名称,所以,我只更改了 URL)。
然后,用 Gitlab URL:
$ git pull origin
由于远程 URL 已经更改,您应该从 Gitlab.
获取更改
- 再次将遥控器 URL 改回 Github
然后推送您的更改:
$ git push origin
你应该完成了!希望它对你有用,它对我有用!
不,Microsoft 无法做到这一点 GitHub。
相反,您需要:
- 创建 GitHub 存储库
- 添加 GitHub 遥控器:
- SSH:
git remote add gh git@github.com:org/repo.git
- HTTPS:
git remote add gh https://github.com/org/repogit
git push gh master
- 从您的 GitHub 存储库创建拉取请求。
不,MS github 不允许,而且可能永远不会。
当然,上游维护者可以将您的分支添加为远程分支,并从中进行挑选或其他操作,但这比处理拉取请求要麻烦得多。因此很少有维护者愿意这样做。
另一种方式:楼主在gitlab上镜像自己的项目。然后 gitlab 用户可以 fork 并提交补丁。这也比仅在 MS github 上处理单个项目需要更多工作,并且可能更令人困惑。
扩展 Kai 和 christianbundy 的回答,我认为最简单的方法是
- 在 Github 上,将存储库分叉到您自己的命名空间中。
- 在 Gitlab 中,导入项目,使用 Github import 实用程序或简单地从现有的 repo 创建。
- 在您的本地存储库中,设置所有三个远程...我们称它们为 origin、fork 和 gitlab。假设 origin 已经是你的遥控器:
git remote add fork my/forked/github/url
git remote add gitlab my/gitlab/url
- 当您想进行更改时,创建一个本地分支,并将远程 gitlab 设置为您的 remote-tracking 分支(继续在此分支上进行更改,直到满意为止)。
git push -u gitlab my-dev-branch
- 当你完成开发后,将你的分支推送到你的分支仓库(在 Github 上)。
git push -u fork my-dev-branch
- 执行此操作时,在控制台输出中,应该有 link 从新分支发出拉取请求。点击它。默认情况下,这应该创建一个针对原始 repo 的 master 分支的拉取请求。填写它重定向到的页面,您应该完成了!
我们的大部分工作发生在 GitLab.com 上(即不是本地 GitLab 安装)。如果上游 repo 驻留在 GitHub,有没有办法向上游提交拉取请求? (如果以特定方式分叉上游存储库是解决方案的一部分,那没关系。)
没有。正确的工作流程是将 GitHub 上的上游项目分叉到您自己的命名空间。然后在你的 GitLab 存储库中使用你的 fork 作为上游,而不是你的 fork 的来源。
然后从您的 GitLab 存储库将更改推送到您的分支(上游)。然后在 GitHub 上,你可以从你的 GitHub 分支提交一个 pull request 到 origin。
这很奇怪,但我就是这样做的!
我在 Github but I wanted to use the Gitlab CI, so I mirrored the repository from Github to Gitlab, then I configured the CI etc... I was looking around online, and I found that with Gitlab Enterprise you have the feature 上有一个存储库,用于将更改从 GitLab 推送到外部存储库,但由于我不为 Gitlab Enterprise 付费,我做了以下操作:
由于我们正在使用 GIT,并且我们 是优秀的程序员 努力成为优秀的程序员使其发挥作用,所以:
我刚刚编辑了 GIT URL
感觉如何?
- 克隆你的存储库
- 转到您的项目...
导航到
.git
>config
你应该有这样的东西:
将URL从Github更改为Gitlab (我在两个服务中都有相同的用户名和项目名称,所以,我只更改了 URL)。
然后,用 Gitlab URL:
$ git pull origin
由于远程 URL 已经更改,您应该从 Gitlab.
获取更改- 再次将遥控器 URL 改回 Github
然后推送您的更改:
$ git push origin
你应该完成了!希望它对你有用,它对我有用!
不,Microsoft 无法做到这一点 GitHub。
相反,您需要:
- 创建 GitHub 存储库
- 添加 GitHub 遥控器:
- SSH:
git remote add gh git@github.com:org/repo.git
- HTTPS:
git remote add gh https://github.com/org/repogit
- SSH:
git push gh master
- 从您的 GitHub 存储库创建拉取请求。
不,MS github 不允许,而且可能永远不会。
当然,上游维护者可以将您的分支添加为远程分支,并从中进行挑选或其他操作,但这比处理拉取请求要麻烦得多。因此很少有维护者愿意这样做。
另一种方式:楼主在gitlab上镜像自己的项目。然后 gitlab 用户可以 fork 并提交补丁。这也比仅在 MS github 上处理单个项目需要更多工作,并且可能更令人困惑。
扩展 Kai 和 christianbundy 的回答,我认为最简单的方法是
- 在 Github 上,将存储库分叉到您自己的命名空间中。
- 在 Gitlab 中,导入项目,使用 Github import 实用程序或简单地从现有的 repo 创建。
- 在您的本地存储库中,设置所有三个远程...我们称它们为 origin、fork 和 gitlab。假设 origin 已经是你的遥控器:
git remote add fork my/forked/github/url
git remote add gitlab my/gitlab/url
- 当您想进行更改时,创建一个本地分支,并将远程 gitlab 设置为您的 remote-tracking 分支(继续在此分支上进行更改,直到满意为止)。
git push -u gitlab my-dev-branch
- 当你完成开发后,将你的分支推送到你的分支仓库(在 Github 上)。
git push -u fork my-dev-branch
- 执行此操作时,在控制台输出中,应该有 link 从新分支发出拉取请求。点击它。默认情况下,这应该创建一个针对原始 repo 的 master 分支的拉取请求。填写它重定向到的页面,您应该完成了!