如何在不分叉的情况下在 gitlab/github 上复制 git 存储库?

Posted

技术标签:

【中文标题】如何在不分叉的情况下在 gitlab/github 上复制 git 存储库?【英文标题】:How to duplicate a git repository on gitlab/github without forking? 【发布时间】:2018-01-31 04:00:30 【问题描述】:

我在 Gitlab / Github 上有一个现有的存储库。我想要在同一组下使用不同的 repo 名称复制它。

注意:认为答案可能类似于another question,我无法通过谷歌搜索找到上述另一个问题,我猜其他用户可能也无法这样做。

【问题讨论】:

Git copying one repository to another empty one (duplicating)的可能重复 【参考方案1】:

在 gitlab 中有开箱即用的功能:

    转到现有项目的Settings -> General 最后展开的面板Advanced 包含Export 按钮。单击它,然后在此页面顶部您可以看到信息消息Project export started. A download link will be sent by email. 检查电子邮件。有以下消息:

项目 NAME_OF_YOUR_EXISTING_PROJECT 已成功导出。

可以从以下位置下载项目导出:SOME_LINK

下载链接将在 24 小时后失效。

    点击SOME_LINK,然后检查Downloads文件夹 转到Project - Your projects页面 点击按钮New projectBlank project 选项卡上设置新项目的名称 然后转到Import project标签 点击按钮Gitlab export 点击Choose file,选择之前下载的文件*.tar.gz 点击按钮Import project 然后你会看到Import in progress标签。 成交

【讨论】:

按照您的描述,我发现Import project 上的选项Gitlab export 可能隐藏在本地GitLab 实例上。它可以在管理菜单Admin Area > Settings > General > Visibility and access controls (docs.gitlab.com/ee/user/admin_area/settings/…) 中激活。 你真棒=)【参考方案2】:

复制存储库

要复制一个仓库而不分叉它,您可以运行一个特殊的克隆命令,然后镜像推送到新的仓库。

在您可以复制存储库并推送到存储库的新副本或镜像之前,您必须在 GitHub/Gitlab 上创建新存储库。在这些示例中,exampleuser/new-repository 是镜像。

镜像仓库

1. 打开(Win​​dows)Git Bash

你也可以使用 (mac)Terminal / (linux)Terminal

2. 创建存储库的裸克隆。

git clone --bare https://github.com/_exampleuser_/_old-repository_.git

3. 镜像推送到新存储库。

cd _old-repository_.git
git push --mirror https://github.com/_exampleuser_/_new-repository_.git

4. 删除您在第 2 步中创建的临时本地存储库。

cd ..
rm -rf _old-repository_

参考:https://help.github.com/articles/duplicating-a-repository/

【讨论】:

我意识到这是一篇旧帖子。我尝试了您的建议,但是当我进入第 3 步时,推送被拒绝并显示以下错误消息:! [remote denied] master -> master (pre-receive hook denied) 这可能是什么原因造成的? @LND 也许您的主分支仍然受到保护?您需要删除保护才能覆盖它。 @JoepBeusenberg master 分支不受保护。我重试了,仍然收到相同的错误消息。 这不会复制 GitLab 中的存储库设置。【参考方案3】:

另一个最简单的方法是......

您可以通过提供 Git URL 来导入现有存储库:

    从您的 GitLab 仪表板中单击 新建项目 切换到导入项目标签 点击按网址回购按钮 填写“Git 存储库 URL”和其余项目字段 点击创建项目开始导入过程 完成后,您将被重定向到新创建的项目

https://docs.gitlab.com/ee/user/project/import/repo_by_url.html

【讨论】:

最简单的一个。 这会复制存储库设置吗? 这会复制所有的分支吗?

以上是关于如何在不分叉的情况下在 gitlab/github 上复制 git 存储库?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不重新加载的情况下在同一页面上提交文件[重复]

如何在不打开任何对话框的情况下在 Facebook 上发布消息?

如何在不重叠的情况下在 UIButton 中实现两个 IBAction?

如何在不堆叠回调的情况下在 jQuery 中制作动画?

如何在不使用 &nbsp 的情况下在行内元素之间添加空格 [重复]

如何在不使用 Segue 的情况下在单独的 UIViewController 中选择实例变量