7

Bitbucket 有一个用于从远程位置导入存储库的导入工具,但它仅支持该git://协议。我们现有的存储库位于防火墙后面的公司控制机器上,我无法更改git://且不可用。我需要将存储库从我们公司的机器移动到 bitbucket,保持原始存储库中的所有历史记录和详细信息完好无损。

有什么方法可以通过 ssh 将原始存储库克隆到本地计算机,然后将该存储库推送到 bitbucket 上新的裸初始化存储库来完成此操作?我会以这种方式丢失任何历史记录或数据吗?

(我希望得到一个不是特定于 bitbucket 的答案,但无论如何都可以“移动”一个 git 存储库。)

4

3 回答 3

10

您需要确保您拥有完整的历史记录。您可以通过先执行完整的本地裸克隆来做到这一点。

git clone --mirror git://LOCAL_URL/somerepo.git

然后按照蒂莫西指出的那样添加遥控器并推送。不过,您可能希望使用除 origin 以外的其他东西作为远程别名。

git remote add bitbucket ssh://git@bitbucket.org/someuser/somerepo.git
git push -u bitbucket --all

这可以用于任何 Git 托管服务。只需将远程 URL 替换为您想要的任何内容。

于 2013-03-05T16:57:33.063 回答
6

据我所知,克隆整个回购并推动它是有效的。Bitbucket 甚至为您提供命令:

cd /path/to/my/repo
git remote add origin ssh://git@bitbucket.org/someuser/somerepo.git
git push -u origin --all   # to push changes for the first time
于 2013-02-28T15:29:13.660 回答
-1

是什么让你认为我们只支持 git:// 协议?我们支持智能 http 协议,例如您可以导入https://github.com/jquery/jquery

因此,如果您的 repo 可以从 Internet 访问并且执行 HTTP(S),那么您使用导入器应该没有问题(它会进行正确的克隆并保留历史记录)。

于 2013-03-06T00:58:23.413 回答