【问题标题】:Two-step git import over ssh通过 ssh 进行两步 git 导入
【发布时间】:2013-03-06 08:58:23
【问题描述】:

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

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

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

【问题讨论】:

    标签: git import ssh bitbucket


    【解决方案1】:

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

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

    然后按照 Timothy 的说明添加遥控器并推送。不过,您可能希望使用 origin 以外的东西作为远程别名。

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

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

    【讨论】:

    • 致命:不是 git 存储库(或任何父目录):.git
    【解决方案2】:

    据我所知,克隆整个 repo 并推送它是可行的。 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
    

    【讨论】:

    • 如果您想要完整的历史记录,请使用 Marcus 建议的克隆命令。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-11-20
      • 2016-06-30
      • 2021-12-05
      • 2018-04-21
      • 2023-03-29
      • 1970-01-01
      • 2014-11-27
      • 1970-01-01
      • 2013-05-13
      相关资源
      最近更新 更多