如何将 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
来源:
我想分叉一个 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
来源: