【问题标题】:How to copy a Gitlab project to another Gitlab repository?如何将 Gitlab 项目复制到另一个 Gitlab 存储库?
【发布时间】:2019-04-08 21:39:34
【问题描述】:

我想将 GitLab 项目复制到另一个应该与原始项目完全独立的存储库。

出于这个原因,我尝试将原始项目分叉到另一个项目中。但是在原项目内部,维护者仍然可以看到一个分支列表,并且知道其他分支在哪里维护。

我想要一个完整的副本,没有任何指向主项目的链接,因此无法由原始项目维护者管理。

我该怎么做?

【问题讨论】:

    标签: git gitlab git-fork


    【解决方案1】:

    我会将原始项目克隆到您本地机器上的沙箱中,在您想要的位置创建新项目,将您的新 gitlab 位置设置为远程并推送到那里。

    假设 old_url 和 new_url 是您的旧网址和新网址:

    git clone <old_url>
    cd <repo_dir_name>
    git remote add new_remote <new_url>
    git push --all new_remote
    

    假设您执行此操作时您的新存储库是空的,它现在将包含原始存储库中存在的所有分支和标签,与它没有任何连接。

    PS:两年后我再次尝试了我的答案,看来你需要git clone --mirror &lt;old_url&gt;,并添加--mirror 开关,如果你想将原始仓库中的所有分支推送到新的分支。如果上述方法不适合您,请尝试使用--mirror

    【讨论】:

      【解决方案2】:

      另一种选择是使用 Gitlab 的 export/import feature

      在任何 GitLab 实例或 GitLab.com 上运行的现有项目可以与所有相关数据一起导出并移动到新的 GitLab 实例中。

      other answer 的区别在于它复制了以下内容:

      导出的内容

      以下项目将被导出:

      • 项目和 wiki 存储库
      • 项目上传
      • 项目配置,不包括集成
      • cmets 问题、与差异和 cmets 合并请求、标签、里程碑、sn-ps 和其他项目实体
      • 设计管理文件和数据
      • LFS 对象
      • 发行板
      • 管道历史
      • 推送规则

      因此,如果您只想复制代码,或者您还想迁移上面列出的其他非代码项,这取决于您的用例。结果仍然是 2 个独立的项目(即它不会显示为分叉)。

      请注意:

      如果启用了项目导入选项,则会显示 GitLab 导入/导出按钮。

      要导出,请转到您项目的设置 > 常规页面:

      然后等待包含可下载 tar.gz. 文件的电子邮件。
      (在我的Gitlab版本上,点击两次按钮,可以直接从浏览器下载。)

      然后要导入,在 Gitlab 上,从顶部栏中选择 New 按钮 > New Project
      然后,选择导入项目 > Gitlab 导出

      上面的 UI 屏幕截图可能会在未来的 Gitlab 版本上发生变化。同样,请务必参考您的 Gitlab 实例的文档页面,或查看来自 Gitlab EE 的公共文档:Project import/export

      【讨论】:

        【解决方案3】:

        当您可能无法访问 GitLab 导出项目按钮时,另一种选择是直接从 url 导入。

        【讨论】:

        • 我试过了,它看起来应该可以工作,但它似乎挂了......
        【解决方案4】:

        另一个选项,在设置>>常规>>高级>>删除分叉关系

        这有助于删除与上游项目的所有关系。

        【讨论】:

          猜你喜欢
          • 2019-07-12
          • 2019-11-09
          • 1970-01-01
          • 2021-10-06
          • 2015-05-17
          • 1970-01-01
          • 2018-03-19
          • 2021-08-24
          相关资源
          最近更新 更多