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

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


当前回答

下面是移动私有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的新家。让所有开发人员知道!

其他回答

下面是移动私有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的新家。让所有开发人员知道!

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

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

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

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

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

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

它看起来是这样的:

最简单的方法:

git remote rename origin repo_bitbucket

git remote add origin https://github.com/abc/repo.git

git push origin master

一旦推送到GitHub成功,通过运行以下命令删除旧的远程:

git remote rm repo_bitbucket

Se移动存储库从Bitbucket到GitHub。

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

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