如何将GitLab仓库fork到GitHub?

7
我想fork一个GitLab公共仓库(不是我的),以便我可以更改我的分支,并使用GitHub桌面应用程序在更新上游版本时更新我的fork。
到目前为止,我所做的是: (1) 在github.com上导入GitLab repo -> 导入存储库,该存储库出现在GitHub上作为我的存储库(实际上不是),而不是作为分支(我希望它是分支)。 (2) 在GitHub桌面应用中,添加存储库->从(1)克隆GitHub存储库到我的本地机器上,对其进行更改,将更改推送到我的GitHub存储库(很好)。 (3) 如果有任何更改已经在上游GitLab存储库中进行了更改,则无法将其合并到我的GitHub存储库中。 实际上,后者不被认为是分支,并且与上游GitLab存储库没有任何连接。通常我会在GitHub桌面版中使用“选择要合并到主分支的分支”,选择上游分支并合并更改。 (4) 我尝试过“git remote add upstream {gitlab repo}”,但这没有改变任何东西。 (5) 也尝试过直接在本地机器上克隆GitLab存储库,对其进行更改,但尝试将更改推送到GitLab上,这是我不能做也不想做的,因为这个存储库不是我的。

为什么你不能用从GitLab拉取的更改更新你的GitHub存储库? - mnestorov
2
我不确定我完全理解整个问题。所以,在gitlab中有一个仓库...你克隆了它。然后你在github上设置了另一个仓库,并将其添加为本地仓库的第二个远程仓库...然后将分支推送到github。所以,在本地,你有两个远程仓库。gitlab(origin?)和github(another-remote)。到目前为止,听起来很简单。从那里开始遇到了什么障碍?因为你应该能够将任何分支推送到你正在使用的2个远程仓库中的任何一个...或者我错过了什么吗? - eftshift0
也许提供一个你正在遵循(或试图遵循)的工作流示例,将更改从一个仓库带入另一个仓库,可能有助于我们理解你想要实现的目标。 - eftshift0
谢谢您的评论,我已经添加了我的尝试。 - Emma Carli
据我所知,Github不能直接与Gitlab通信,因此无法在Github上创建一个“fork”并让其了解Gitlab。你可能需要自己处理这两个系统之间的桥接。 - Lasse V. Karlsen
显示剩余2条评论
2个回答

5
很不幸,您无法使用Gitlab和GitHub网站来实现您要求的操作。您可以在本地添加上游远程库并手动合并更改。
第4步已经是朝着正确方向迈出的一步。要合并上游分支,需要进行获取和合并操作,像这样:
git remote add upstream {gitlab repository}

现在获取上游代码。这将从Gitlab仓库下载提交记录、文件和引用。

git fetch upstream

接下来,您可以将上游分支合并到本地存储库中。请注意,您可能需要解决冲突。

git merge upstream/master

要发布更改,请将它们推送到源。 在这种情况下,是 GitHub。 origin 远程是默认命名空间,这意味着当您拉取主分支,例如使用 git pull master 时,会拉取 GitHub 的主分支。

git push

Sources:


2
"git fetch upstream" 就是我需要的!现在我可以使用 GitHub 桌面版合并上游更改。谢谢! - Emma Carli

1
你已经接近成功,只差一步将GitLab上的远程更改更新到GitHub仓库中:

只需要执行以下操作:

git fetch <gitlab remote> # or git pull or pull --rebase

然后你将其推送到你的GitHub仓库。
git push <github remote> <branch name> 

基本上,您的工作流程是从GitLab获取(pull) -> 推送(push)到GitHub。更详细的答案可以在这里找到。
我不知道是否存在GitLab和GitHub之间的任何现有集成,可以将您的存储库分类为GitHub上的派生(forked)。
您可以随时执行此过程。这只是您的手动工作。
如果您想自动化此过程,可以查看cron jobs,但那是完全不同的话题。
(4)我尝试了"git remote add upstream {gitlab repo}",但是没有任何变化。
这只是将另一个远程添加到您的远程列表中。本身并没有做任何事情。您必须向该远程push才能开始进行更改。

另外,既然你正在做这件事,请检查一下你正在工作的项目是否有许可证。在这种情况下,这将非常有帮助。


谢谢,非常有帮助。 - Emma Carli

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