当前位置: 首页 > news >正文

Gitlab中如何进行仓库迁移

需求:之前有一个自己维护的新仓库A,现在需要将这个仓库提交并覆盖另一个旧的仓库B,需要保留A中所有的commit信息。

1.方法一:将原有仓库A导出后再导入到新的仓库B中

适用场景:新的仓库B是一个待建仓库,相当于做了仓库迁移

  • 1.登录原有仓库B,查看项目信息,如下图所示,点击设置——通用
    在这里插入图片描述
  • 2.高级选型中选择下载导出,导出成功后会收到邮件下载连接,点击下载到本地
    在这里插入图片描述
  • 3.登录gitlab,新建项目——选择导入项目,上传上一步的邮件中下载的压缩包就可以了,传完文件刷新页面会一直显示导入中,这个过程可能比较慢。

2.方法二:通过git进行仓库有迁移

适用场景:已有一个新仓库A,有一个旧仓库B,B中有之前存在的代码,现在需要将A中所有的代码和commit信息都提交并覆盖B中的内容。

  • 1: 克隆旧仓库B(目标仓库)
    首先,需要从 GitLab 上克隆目标仓库(即你想覆盖的旧仓库),在你的本地机器上执行以下命令:
git clone <旧仓库的 URL>
cd <旧仓库的目录>
  • 2: 添加新仓库A作为远程仓库
    然后需要将新仓库添加为远程仓库,以便能够将新仓库的内容推送到目标仓库。假设你的新仓库 URL 是 <新仓库的 URL>,可以使用以下命令:
git remote add new-origin <新仓库的 URL>
  • 3: 拉取新仓库的内容
    接下来,拉取新仓库的内容到你的本地仓库:
git fetch new-origin
  • 4: 覆盖旧仓库的内容
    此时,新仓库的内容已经拉取到本地,但需要将其强制推送到旧仓库,可以通过以下命令实现:
git reset --hard new-origin/main

注意:这里假设新仓库的默认分支是 main,如果是其他分支(例如 master),请相应调整命令中的分支名称。
reset --hard 会将本地仓库的内容重置为新仓库中的内容,同时保留新仓库的 commit 历史。

  • 5: 推送到旧仓库
    最后,将重置后的内容推送到目标仓库(即旧仓库),并使用 --force 参数来强制覆盖目标仓库的内容:
git push origin main --force

注意:如果目标仓库的默认分支是 master,将 main 替换为 master。

相关文章:

  • 游戏应用谷歌后台使用介绍
  • 设计模式Python版 命令模式(上)
  • conda 修复 libstdc++.so.6: version `GLIBCXX_3.4.30‘ not found 简便方法
  • 如何在Servlet容器中使用HttpServletResponse?
  • 【Mybatis】动态 SQL:代码与数据的灵动共舞,奏响数据库查询的华丽乐章
  • day9手机创意软件
  • 小程序canvas2d实现横版全屏和竖版逐字的签名组件(字帖式米字格签名组件)
  • Java面试题总结 - Java多线程篇(附答案)
  • Open Liberty使用指南及微服务开发示例(二)
  • DataBase【MySQL基础夯实使用说明(下)】
  • 在软件产品从开发到上线过程中,不同阶段可能出现哪些问题,导致软件最终出现线上bug
  • 网络安全之探险
  • Python Pandas(7):Pandas 数据清洗
  • Log4j定制JSON格式日志输出
  • 常用共轭先验分布
  • AWTK-WEB 快速入门(4) - JS Http 应用程序
  • Redis7——基础篇(一)
  • Jenkins 安装插件 二
  • MySQL - 索引 - 介绍
  • 如何下载Qt和运行第一个程序。
  • 聆听百年唐调正声:唐文治王蘧常吟诵传习的背后
  • 视频丨雄姿英发!中国仪仗队步入莫斯科红场
  • 长三角地区中华老字号品牌景气指数发布,哪些牌子是你熟悉的?
  • 国防部:正告菲方停止以任何方式冲撞中方核心利益
  • 李公明︱一周书记:浪漫主义为什么……仍然重要?
  • 上市不足一年,吉利汽车拟私有化极氪并合并:整合资源,杜绝重复投入