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

bod*_*tva 157 git github repository transfer gitlab

如果需要,可以将存储库从GitLab传输到GitHub.如果是这样,我怎么能这样做呢?

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

Von*_*onC 162

你可以转移它们(只需将一个遥控器添加到GitHub仓库并推送它们)

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

历史将是一样的.

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

OP菩萨 报告具有与该GitHub库的HTTPS URL的问题:

The requested URL returned error: 403
Run Code Online (Sandbox Code Playgroud)

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

然后你可能需要以ssh方式推送它.您可以在此处详细了解如何操作.

请参阅" 推送到Git返回错误代码403致命错误:HTTP请求失败 ".

  • 有关进口问题和标签的任何意见?可以通过pull和push导入除代码之外的任何其他内容吗?谢谢. (5认同)
  • @ReggieEscobar不,你可以删除“origin”(“git远程删除origin”)将“github”“origin”重命名为“origin”(“git远程重命名origin github”),然后继续“git推送”(到“ origin`,现在是 GitHub):从 GitLab 到 GitHub 的传输已完成。 (5认同)
  • @kiki 它将推送 *all* 本地分支,但是如果您的本地存储库本身是一个克隆,则它只会将 master 作为其默认的本地检出分支。在使用 `push --mirror` 之前,您必须首先在它们各自的远程跟踪分支之后创建其他本地分支。http://stackoverflow.com/a/18911322/6309。另请参阅 http://stackoverflow.com/a/24099141/6309(最后一句)中提到的替代方案 (3认同)

man*_*noj 108

导入存储库功能非常简单登录到github.com,

在配置文件图片的一侧,你会发现+按钮点击,然后会有选项import repository.你会找到这样的页面. 在此输入图像描述 您的旧存储库的克隆URL是必需的,在您的情况下是gitlab repo url.然后选择所有者,然后键入此仓库的名称,然后单击开始导入按钮.

  • GitHub添加了这个非常方便.但是,如果它是防火墙后面的内部GitLab,它将无法工作,这代表了GitLab的一个大用例. (24认同)
  • 对于使用导入选项的其他任何人来说,只是一个快速说 我必须在GitLab上禁用MFA才能使用它. (3认同)
  • @D-Day 您不需要禁用 MFA。我遇到了同样的问题,您所需要做的就是在 GitLab 上创建个人访问令牌,并在导入到 GitHub 时使用它作为密码。 (3认同)
  • 这工作正常。比公认的答案好得多 (2认同)
  • 导入的存储库现在不一定必须是公开的,因为 github 已经免费添加私有存储库。 (2认同)
  • 这仅转移存储库本身,没有问题、PR、标签、里程碑或其他任何内容。还是比从 gitlab 到本地到 github 更容易 (2认同)

1u-*_*1u- 14

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

  • 仅供参考:node-gitlab-2-github 可以迁移问题、PR、标签和里程碑,功能更丰富一些,另一个可以迁移问题、里程碑和 wiki,但不太复杂 (2认同)

小智 8

对于任何仍在寻找一种更简单的方法将存储库从 Gitlab 转移到 Github 同时保留所有历史记录的人。

步骤1.登录Github,创建一个与您要传输的存储库名称完全相同的私有存储库。

步骤 2. 在“从命令推送现有存储库”下复制新存储库的链接,它将如下所示:

git@github.com:your-name/name-of-repo.git
Run Code Online (Sandbox Code Playgroud)

步骤 3. 打开本地项目并查找文件夹,.git通常这将是一个隐藏文件夹。里面的.git文件夹打开config

配置文件将包含类似以下内容:

[remote "origin"]
url = git@github.com:your-name/name-of-repo.git
fetch = +refs/heads/:refs/remotes/origin/
Run Code Online (Sandbox Code Playgroud)

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

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

步骤 5. 为了确保一切按预期工作,进行更改、提交、推送,新的提交应该出现在新创建的 Github 存储库上。

步骤 6. 作为最后一步,您现在可以存档 Gitlab 存储库或将其设置为只读。


Sam*_*miX 6

我有相反的问题,最后不得不为公司创建自己的bash shell脚本,因为公司政策的变化,将数百个repos从Github迁移到Gitlab.
该脚本使用Gitlab API远程创建一个repo,并将Github repo推入其中.还没有README.md文件,但sh文档很好.
同样的事情可以按照我想象的方式完成.希望这可以帮助.
https://github.com/mahmalsami/migrate-github-gitlab/blob/master/migrate.sh


小智 6

您可以使用以下命令:

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
Run Code Online (Sandbox Code Playgroud)

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

git push -u -f origin --all
git push -u -f origin --tags
Run Code Online (Sandbox Code Playgroud)

这将是 GitLab 建议导入 GitHub 上现有存储库的路径,但是,如果您更改<yourRepository.git>GitHub 上存储库链接的链接,则可以采用其他方式,即从 GitLab 传输到 GitHub。在实践中,你创造了一个新的原点并强制推动一切。