将 git 存储库从 GitLab 转移到 GitHub - 我们可以,如何转移和陷阱(如果有的话)?
Posted
技术标签:
【中文标题】将 git 存储库从 GitLab 转移到 GitHub - 我们可以,如何转移和陷阱(如果有的话)?【英文标题】:Transfer git repositories from GitLab to GitHub - can we, how to and pitfalls (if any)? 【发布时间】:2014-04-11 12:42:57 【问题描述】:如果需要,可以将存储库从 GitLab 转移到 GitHub。如果是这样,我该如何做同样的事情?
此外,考虑到我可能决定最终将它们移至 GitHub(因为它目前有更多我可能会觉得方便的功能)对于我的项目)。
【问题讨论】:
【参考方案1】:您可以转移这些(只需将遥控器添加到 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 方式推送它。您可以在此处阅读有关如何操作的更多信息。
见“Pushing to Git returning Error Code 403 fatal: HTTP request failed”。
【讨论】:
谢谢冯-您的回答对我有用。我刚刚在您的回答中添加了一些关于确切的 git remote add cmd 并在需要时以 ssh 方式推送的内容。希望没关系。 @boddhisattva 没关系,但我看到你的编辑被拒绝了。我自己在答案中添加了它。 关于导入问题和标签的任何cmets?除了代码之外的任何东西都可以通过拉和推来导入吗?谢谢。 @kiki 它将推送 all 本地分支,但如果您的本地 repo 本身是一个克隆,它将只有 master 作为其默认的本地签出分支。在使用push --mirror
之前,您必须先在其repsective 远程跟踪分支之后创建其他本地分支。 ***.com/a/18911322/6309。另见***.com/a/24099141/6309(最后一句)提到的替代方案
@ReggieEscobar 不,你可以删除origin,
(git remote remove origin
) 将github
origin
重命名为origin
(git remote rename origin github
),然后继续git push
(到@98765433) @,现在是 GitHub):从 GitLab 到 GitHub 的转移完成。【参考方案2】:
这很容易通过导入存储库功能
登录github.com
,
您会在个人资料图片的一侧找到+
按钮单击该按钮,然后将出现import repository
的选项。
你会发现这样的页面。
您的旧存储库的克隆 URL 是必需的,在您的情况下是 gitlab repo url。
然后选择所有者,然后键入此 repo 的名称,然后单击开始导入按钮。
【讨论】:
这个超级方便,GitHub已经添加了。但是,如果它是防火墙后面的内部 GitLab,它将无法工作,这代表了 GitLab 的一个大用例。 只是给使用导入选项的其他人的快速说明。我必须在 GitLab 上禁用 MFA 才能正常工作。 这很好用。比公认的答案好得多 导入的仓库现在不一定要公开,因为 github 已经免费添加私有仓库了。 @D-Day 您不需要禁用 MFA。我遇到了同样的问题,您需要做的就是在 GitLab 上创建一个个人访问令牌,并在导入 GitHub 时将其用作您的密码。【参考方案3】:如果你想迁移包含 wiki 和所有问题和里程碑的 repo,你可以使用 node-gitlab-2-github 和 GitLab to GitHub migration
【讨论】:
仅供参考 node-gitlab-2-github 可以迁移问题、PR、标签和里程碑,并且功能更丰富一点,另一个可以迁移问题、里程碑和 wiki,但不太复杂【参考方案4】:如果你在 GitLab 上启用了 MFA,你应该去 Repository Settings/Repository ->Deploy Keys 并创建一个,然后在 GitHub 上导入 repo 时将其用作登录
【讨论】:
几乎可以肯定你想要一个部署令牌,而不是部署密钥。 (你需要一个用户名/密码给 GitHub,你不能在那里上传私有 ssh 密钥。)【参考方案5】:您可以使用以下命令:
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。在实践中,您创建一个新的起源并强制推动一切。
【讨论】:
【参考方案6】:使用默认的 Github 存储库导入是可能的, 但只需确保在 Gitlab 中未启用 两因素身份验证。
谢谢
【讨论】:
【参考方案7】:对于仍在寻找一种更简单的方法来将存储库从 Gitlab 转移到 Github 同时保留所有历史记录的人。
步骤 1. 登录 Github,创建一个与您要转移的 repo 名称完全相同的私有 repo。
第 2 步。在“从命令推送现有存储库”下复制新存储库的链接,它将如下所示:
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 上复制的那个。
步骤 4. 在终端中打开您的项目文件夹并运行:git push --all
。这会将您的代码以及所有提交历史推送到 Github。
第 5 步。为确保一切按预期工作,进行更改、提交、推送和新提交应出现在新创建的 Github 存储库中。
第 6 步。作为最后一步,您现在可以归档 Gitlab 存储库或将其设置为只读。
【讨论】:
进一步阅读,看这篇文章android.jlelse.eu/… 如果这个方法没有“坑”,同时推送到gitlab和github是个不错的方法。你应该只输入相关的网址:一个在另一个。【参考方案8】:您可以按照以下 2 个步骤简单地将 GitLab 项目连同包含的历史记录和提交转移到 GitHub:
单击 Github 配置文件右侧的设置,然后选择导入存储库。然后在旧的存储库 URL 上粘贴 Gitlab 要转移的存储库链接。按照所附截图Steps to import git repository
点击导入,然后在验证登录凭据后等待一分钟,最后你就完成了。检查您的 GitHub 存储库以查看更改。
【讨论】:
【参考方案9】:一种简单的解决方案是向本地存储库添加一个远程 URL。
步骤:
git remote add <name> <URL>
git push name
例子:
git remote add github_origin https://github.com/...
git push github_origin
【讨论】:
以上是关于将 git 存储库从 GitLab 转移到 GitHub - 我们可以,如何转移和陷阱(如果有的话)?的主要内容,如果未能解决你的问题,请参考以下文章
如何将包含所有分支的 Git 存储库从 Bitbucket 移动到 GitHub?