将包含所有分支和完整历史的Git存储库从Bitbucket移动到GitHub的最佳方法是什么?

是否有我必须使用的脚本或命令列表?


当前回答

我有一个相反的用例,从GitHub导入一个现有的存储库到Bitbucket。

Bitbucket也提供了一个导入工具。惟一必要的步骤是将URL添加到存储库。

它看起来是这样的:

其他回答

这很简单。

在GitHub中创建一个新的空存储库(没有README或许可证,您可以稍后添加它们),将显示以下屏幕。 在import code选项中,粘贴你的Bitbucket存储库的URL和voilà!!

Se移动存储库从Bitbucket到GitHub。

这帮助我从一个Git提供者切换到另一个提供者。最后,所有提交都在目标Git存储库中。简单明了。

Git远程重命名原点bitbucket git远程添加origin https://github.com/edwardaux/Pipelines.git Git push origin master 一旦我很高兴在GitHub上的推送成功了,我就可以了 通过以下命令删除旧的远程: Git远程rm bitbucket

根据@MarMass的回答,如果GitHub导入器不断将你重定向到身份验证屏幕,你需要在BitBucket中创建一个应用程序密码,以便导入你的私有存储库:

去Bitbucket >个人设置>应用程序密码。 创建具有存储库读访问权限的应用程序密码。 当在GitHub导入器中提示输入您的用户名/密码时,输入您的BitBucket用户名,并将上面创建的令牌作为密码。

在设法解决身份验证问题后,我的导入也出现了以下消息:“有一个错误将提交推到GitHub.”。

这里的问题是,至少对我来说,我的GitHub帐户被设置为“阻止暴露我的电子邮件的命令行推送”,而我试图从Bitbucket导入的存储库包含来自我个人电子邮件地址的提交。在暂时禁用这个设置(GitHub >设置>电子邮件)后,我就可以去了。

你可以参考GitHub页面“复制存储库”

它使用:

Git克隆——镜像:克隆每个引用(提交,标签,分支) Git push—mirror:用于推送所有内容

这将给予:

git clone --mirror https://bitbucket.org/exampleuser/repository-to-mirror.git
# Make a bare mirrored clone of the repository

cd repository-to-mirror.git
git remote set-url --push origin https://github.com/exampleuser/mirrored
# Set the push location to your mirror

git push --mirror

正如L S在评论中指出的那样:

使用MarMass描述的GitHub导入代码功能更容易。 参见https://github.com/new/import 除非…您的回购包括一个大文件:问题是,导入工具将失败,没有一个明确的错误消息。只有GitHub支持才能诊断出发生了什么。

有导入一个存储库与GitHub导入器

如果你有一个项目托管在另一个版本控制系统上,如Mercurial,你可以使用GitHub Importer工具自动将它导入到GitHub。

在任意页面的右上角单击,然后单击“导入存储库”。 在"Your old repository's clone URL"下,输入你想要导入的项目的URL。 选择您的用户帐户或拥有存储库的组织,然后在GitHub上键入存储库的名称。 指定新的存储库应该是公共的还是私有的。

公共存储库对GitHub上的任何用户都是可见的,因此您可以从GitHub的协作社区中受益。 公共或私有存储库单选按钮私有存储库仅对存储库所有者以及您选择与之共享的任何合作者可用。

检查您输入的信息,然后单击开始导入。

当存储库完全导入后,您将收到一封电子邮件。

将项目导入GitHub 使用GitHub Importer导入存储库