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

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


当前回答

这很简单。

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

其他回答

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

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

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

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

如果你在GitHub上找不到“导入代码”按钮,你可以:

直接打开GitHub Importer并输入URL。它看起来像: 给它一个名字(或者它会自动导入这个名字) 选择Public或Private存储库 单击“开始导入”

2016年5月,GitHub宣布能够“导入带有大文件的存储库”。

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

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

它看起来是这样的:

如果你想要将本地Git存储库移动到另一个上游,你也可以这样做:

获取当前远程URL:

git remote get-url origin

将显示如下内容: https://bitbucket.com/git/myrepo

设置新的远程存储库。

git remote set-url origin git@github.com:folder/myrepo.git

现在推送当前(开发)分支的内容:

Git push -set-upstream源码开发

现在,您在新的远程中拥有了分支的完整副本。

可选地,返回到这个本地文件夹的原始git-remote:

git remote set-url origin https://bitbucket.com/git/myrepo

它的好处是,你现在可以从GitHub的另一个文件夹中获得新的Git存储库,这样你就有两个本地文件夹都指向不同的远程,以前的(Bitbucket)和新的都可用。

下面是移动私有Git存储库的步骤:

步骤1:创建一个GitHub存储库

首先,在GitHub上创建一个新的私有存储库。保持存储库为空是很重要的,例如,在创建存储库时,不要勾选“使用README初始化这个存储库”选项。

步骤2:移动现有内容

接下来,我们需要用Bitbucket存储库中的内容填充GitHub存储库:

从Bitbucket中查看现有的存储库: git克隆https://USER@bitbucket.org/USER/PROJECT.git 添加新的GitHub存储库作为Bitbucket签出的存储库的上游远程: cd项目 git远程添加upstream https://github.com:USER/PROJECT.git 将所有分支(下面:只是master)和标签推到GitHub 存储库: Git推送上游master Git推——标签上游

步骤3:清理旧的存储库

最后,我们需要确保开发人员不会因为同一个项目有两个存储库而感到困惑。下面是删除Bitbucket存储库的方法:

仔细检查GitHub存储库是否包含所有内容 转到旧Bitbucket存储库的web界面 选择菜单项“设置→删除存储库” 添加新的GitHub存储库的URL作为重定向URL

这样,存储库就完全安顿在了GitHub的新家。让所有开发人员知道!