如何将 GitLab 存储库 fork 到 GitHub?

How to fork a GitLab repository to GitHub?

我想分叉一个 GitLab 存储库(不是我自己的,public),这样我就可以对我的分叉进行更改,并在有上游更新时使用上游版本更新该分叉,使用GitHub桌面。

到目前为止,我所做的是:

(1) 在 github.com -> import repository 上导入 GitLab 存储库,该存储库在 GitHub 上显示为我自己的(它不是)而不是叉子(我想要的)它是)

(2) 在 GitHub 桌面上,添加存储库 -> 在我的本地计算机上从 (1) 克隆 GitHub 存储库,对其进行更改,将更改推送到我的 GitHub 存储库(好)

(3) 如果对上游 GitLab 存储库进行了任何更改,我无法将它们合并到我的 GitHub 存储库中。事实上,后者不被视为一个分支,它没有以任何方式连接到上游 GitLab 存储库。 通常我会在 GitHub 桌面上使用“选择要合并到 master 的分支”,选择上游分支,然后合并更改。

(4) 我尝试了“git 远程添加上游 {gitlab repo}” 但这并没有改变任何东西。

(5) 也尝试过,或者,直接在我的本地机器上克隆 GitLab 存储库,对其进行更改,但是推送我的更改尝试将它们推送到 GitLab,我不能也不想这样做因为回购不是我的。

您几乎可以使用来自 GitLab 的远程更改来更新您的 GitHub 存储库。您需要做的就是:

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

然后你推送到你的 GitHub 仓库

git push <github remote> <branch name> 

基本上,您的工作流程是 pull from GitLab -> push to GitHub。可以找到更详细的答案 here.

我不知道 GitLab 和 GitHub 之间的任何现有集成,这会将您的存储库分类为在 GitHub 上分叉。

您可以根据需要多次执行此过程。这只是您的手工工作。

如果您正在研究自动化此过程,可以查看 cron jobs,但那是一个完全不同的主题。


(4) I tried "git remote add upstream {gitlab repo}" but that did not change anything.

这只是将另一个遥控器添加到您的遥控器列表中。就其本身而言,它不执行任何操作。您必须 push 到那个遥控器才能开始进行更改。


此外,既然你这样做了,请检查你正在从事的项目是否有许可证。这在这种情况下会很有帮助。

很遗憾,使用 Gitlab 和 GitHub 网站无法满足您的要求。您可以做的是在本地添加上游远程并手动合并更改。

您在第 4 步中所做的已经是朝着正确方向迈出的一步。为了合并上游,您需要做的是获取和合并。像这样:

git remote add upstream {gitlab repository}

现在获取上游。这将从 Gitlab 存储库下载提交、文件和引用。

git fetch upstream

然后您可以将上游的分支合并到您的本地存储库中。请注意,您可能必须解决冲突。

git merge upstream/master

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

git push

来源: