如何在GitLab/GitHub上复制或克隆一个Git仓库而不使用fork操作?

35

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

注意:虽然答案可能类似于另一个问题,但我通过谷歌搜索无法找到所述的其他问题,我猜其他用户也无法这样做。


3个回答

44
在GitLab中,有一个开箱即用的功能:
1. 进入现有项目的“设置”->“常规”页面 2. 最后一个展开的面板“高级”包含“导出”按钮。点击它,然后在页面顶部你会看到信息提示:“项目导出已开始。下载链接将通过电子邮件发送。” 3. 检查电子邮件。会有以下信息:
项目NAME_OF_YOUR_EXISTING_PROJECT已成功导出。 项目导出可以从以下链接下载:SOME_LINK 下载链接将在24小时后过期。
4. 点击SOME_LINK,然后检查Downloads文件夹。 5. 在用户界面中,点击左侧边栏顶部的+按钮,选择“新项目/仓库”。 6. 点击导入项目框。 7. 点击Gitlab导出按钮。 8. 点击选择文件,选择之前下载的*.tar.gz文件。 9. 点击导入项目按钮。 10. 然后您将看到导入进行中标签。 11. DEAL

根据您的描述,我发现在本地GitLab实例上,“导入项目”选项中的“Gitlab导出”可能会被隐藏。您可以在管理员菜单“管理区域>设置>常规>可见性和访问控制”中激活它(https://docs.gitlab.com/ee/user/admin_area/settings/visibility_and_access_controls.html#import-sources)。 - Mr. Dice
这是否也会克隆所有项目设置(即除了git之外的所有内容)? - Michael K
@MichaelK 我不确定,但你可以在这个帖子中检查并描述你的经验! - Barabas
我刚刚看到新的GitLab安装显示了哪些内容被导出,哪些没有。也许我们可以将此列表添加到答案中,但是“编辑队列已满” :-D 将导出以下项目:
  • 项目和维基存储库,
  • 项目上传,
  • 项目配置(不包括集成),
  • 带有评论的问题、带有差异和评论的合并请求、标签、里程碑、片段和其他项目实体,
  • LFS对象,
  • 问题板,
  • 设计管理文件和数据。
- Michael K
以下项目将不会被导出:作业日志和工件, 容器注册表镜像, CI 变量, 流水线触发器, Webhooks, 任何加密令牌。 - Michael K

23

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

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

  1. 从您的GitLab仪表板单击新项目
  2. 切换到导入项目选项卡
  3. 单击Repo by URL按钮
  4. 填写“Git存储库URL”和其余项目字段
  5. 单击创建项目开始导入过程
  6. 完成后,您将被重定向到您新创建的项目

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


3
最简单的一个。 - DrMorteza
这会复制存储库的设置吗? - Kevin Boucher
这会复制所有的分支吗? - Vanity Slug
它完美地工作。它不会复制存储库的任何设置,但它会复制所有分支(提交、标签、管道等)。 - mggSoft

23

复制存储库

如果要复制一个存储库而不是派生它,可以运行特殊的克隆命令,然后将其镜像推送到新存储库。

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

镜像存储库

1. 打开(Windows)Git Bash

也可以使用(Mac)终端/(Linux)终端

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/


我知道这是一个旧帖子。我尝试了你的建议,但当我到达第三步时,推送被拒绝,并显示以下错误信息:![远程拒绝] master -> master(pre-receive hook declined)这可能是什么原因? - LND
@LND 也许你的主分支仍然受到保护?你需要移除保护才能覆盖它。 - Joep Beusenberg
@JoepBeusenberg 主分支未受保护。我重试了,仍然收到相同的错误消息。 - LND
这不会复制GitLab中的存储库设置。 - Kevin Boucher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接