从GitLab转移git存储库到GitHub -我们可以,如何和陷阱(如果有的话)?

如果需要,可以从GitLab转移存储库到GitHub。如果是这样,我该如何做呢?

此外,考虑到我可能最终决定将它们转移到GitHub(因为它目前有更多的功能,我可能会发现对我的项目很方便),这样做是否有任何陷阱或预防措施,我需要在这样做之前记住。

189673 次浏览

你可以转移这些(简单地通过添加一个远程到GitHub回购并推送它们)

  • 在GitHub上创建一个空的回购
  • git remote add github https://yourLogin@github.com/yourLogin/yourRepoName.git
  • git push --mirror github

历史将是一样的。

但是你将失去访问控制(在GitLab中定义的团队对你的回购具有特定的访问权限)

如果你遇到任何问题与GitHub回购的https URL:

The requested URL returned an error: 403

你所需要做的就是输入你的GitHub密码,但OP建议:

然后,您可能需要以ssh方式推动它。你可以在这里阅读更多关于如何做到这一点。

看到“推送到Git返回错误码403致命:HTTP请求失败"。


注意,迈克还在的评论中添加了:

对于下游存储库,GitLab也可以设置为把镜子,其中有将镜像推送到GitHub的具体说明. GitLab。
这可以使用GitHub个人访问令牌,也可以设置为定期推送。
你可以使用这个选项在GitHub上共享,但要把你的主要开发活动保留在你的GitLab实例中

这是非常容易通过导入存储库功能:

登录到github.com

侧面的头像,你会发现+按钮点击,然后会有选项import repository:

enter image description here

你会发现这样一个页面:

enter image description here

您的旧存储库的克隆URL是必需的,这是gitlab回购URL在您的情况下。

然后选择所有者,然后键入此回购的名称,然后单击开始导入按钮。

如果你想要迁移包含wiki和所有问题和里程碑的回购,你可以使用node-gitlab-2-githubGitLab到GitHub迁移

如果你在GitHub上启用了MFA,你应该去存储库设置/存储库->部署密钥并创建一个,然后在GitHub上导入repo时使用它作为登录

对于任何仍然在寻找一个更简单的方法将回购从Gitlab转移到Github,同时保留所有历史的人。

步骤1。登录到Github,创建一个私人回购与您想要转移的回购完全相同的名称。

步骤2。在“从命令中推一个现有的存储库”下;复制新repo的链接,它看起来像这样:

git@github.com:your-name/name-of-repo.git

步骤3。打开你的本地项目并寻找文件夹.git通常这将是一个隐藏文件夹。在.git文件夹中打开config

配置文件将包含如下内容:

[remote "origin"]
url = git@github.com:your-name/name-of-repo.git
fetch = +refs/heads/:refs/remotes/origin/

[remote "origin"]下,将URL更改为您在Github上复制的URL。

步骤4。打开终端中的项目文件夹并运行:git push --all。这将把你的代码推送到Github以及所有的提交历史。

第5步。为了确保一切都按预期工作,更改、提交、推送和新提交应该出现在新创建的Github repo上。

步骤6。作为最后一步,您现在可以归档您的Gitlab回购或将其设置为只读。

默认Github库导入是可能的, 但只要确保Gitlab中不启用双因素身份验证。

谢谢

你可以简单地将你的GitLab项目转移到GitHub,包括历史记录和提交,以下2步:

  1. 单击Github配置文件右侧的setting,选择import repository。然后在旧的存储库URL上粘贴Gitlab 要传输的存储库链接。按照附带的截图导入git存储库的步骤

  2. 单击导入,然后在验证登录凭证后等待一分钟,最后完成。检查您的GitHub存储库查看更改。

可以使用以下命令:

cd existing_repository
git remote rename origin old-origin
git remote add origin <yourRepository.git>
git push -u origin --all
git push -u origin --tags

如果发生错误,你可以尝试使用-f命令强制推送,输入如下:

git push -u -f origin --all
git push -u -f origin --tags

这将是GitLab推荐的导入GitHub上现有存储库的路径,然而,如果你将<yourRepository.git>链接更改为GitHub上的存储库链接,则有可能走另一条路,从GitLab转移到GitHub。在实践中,你创造了一个新的原点,并强迫推动一切。

一个简单的解决方案是向本地存储库添加一个远程URL。

步骤:

git remote add <name> <URL>
git push name

例子:

git remote add github_origin https://github.com/...
git push github_origin

你可以从gitlab导入存储库到github使用用户界面(UI)以下说明:

→首先登录gitlab

→然后在gitlab中复制项目的链接

→然后登录github

→在github界面右侧按(+)键

→然后单击导入存储库

→然后将链接粘贴到“您的旧存储库的克隆url”中;在现场

→然后更正报告名称

→然后选择private/public

→然后按“开始导入”;按钮

它会导入你的gitlab项目的所有文件。

完成项目后,它将显示

“;导入完成!您的新存储库"link"已经准备好了。

最后导入项目。

请确保您的GitLab用户帐户上没有启用MFA,否则它将无法工作。 如果您启用了MFA(它应该是),请暂时禁用它,直到执行导入,然后重新启用它