极狐GitLab 正式推出面向 GitLab 老旧版本(12.x、13.x、14.x、15.x 等)免费用户的专业升级服务,点击查看详情

返回列表 发布新帖

基于 git 裸仓库 进行迁移

143 0
发表于 2025-11-17 16:28:30 | 显示全部楼层 阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
基于 git 裸仓库进行迁移
参考文档:
## 说明
裸仓库(bare repository)是一个没有工作目录的 Git 存储库。通常来说,Git 存储库会包含一个 ".git" 目录和一个工作目录,该目录中保存了项目文件的副本以及对它们进行的修改。
裸仓库只包含 ".git" 目录,其中存储着版本控制所需要的所有文件,包括对象数据库、索引和配置文件,但不包含实际的项目文件。
裸仓库没有工作目录,因此不能像普通的 Git 存储库一样进行日常开发工作。相反,裸仓库主要用于共享代码库或作为远程存储库使用。例如,软件开发团队可能会在内部网络上设置一个裸仓库,允许成员共享代码而无需每次都将代码复制到各自的计算机上。
与非裸仓库相比,裸仓库在协作开发和持续集成方面具有许多优势。由于裸仓库不包含工作目录,因此它们不会与其他分支或提交之间产生冲突,并且可以轻松地与其他远程存储库同步。此外,由于裸仓库不包含工作目录,因此它们的大小更小,可以更快地传输和克隆。

背景说明
某客户使用gitlab由于业务需要,需要将git仓库迁移到另外一个gitlab服务器上,然而该仓库非常大,客户的需求很简单,只需要git代码的迁移;另外由于网络限制的原因,也无法使用 mirror,因此客户采用 git 裸仓迁移。
操作
  • 查看该项目的 hashed 路径,确定仓库的代码位置
    • 管理员登录 gitlab,在 GitLab 左侧边栏底部,点击管理员
    • 在管理员区域的左侧菜单中,选择概览 > 项目
    • 项目列表中,找到并选择您想要查看的项目。
    • 在项目的详情页面中,找到相对路径字段。该字段的值就是项目的哈希路径,例如:@hashed/e7/f6/e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683.git

  • 迁移代码
    a. 创建待迁移代码的目录
    mkdir /tmp/migration
    b. git 配置添加不可信目录
    git config --global --add safe.directory /mnt/nfs-01/git-data/repositories/@hashed/e7/f6/e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683.git
    c. git克隆裸仓库
    git clone --bare /mnt/nfs-01/git-data/repositories/@hashed/e7/f6/e7f6c011776e8db7cd330b54174fd76f7d0216b612387a5ffcfb81e6f0919683.git /tmp/migration/dotenv
    d. 从当前仓库中删除名为 origin 的远程地址
    cd /tmp/migration/dotenv
    git remote remove origin
    e. 添加新服务器上的 git 仓库地址
    git remote add gitlab https://jihulab.com/cs-test-group1/kxwang/dotenv.git
    f. 推送代码
    git push --mirror gitlab

                                   
    登录/注册后可看大图

                                   
    登录/注册后可看大图



回复

使用道具 举报

意见建议

Email:forum@gitlab.cn
  • 关注公众号
  • 添加专业顾问
Copyright © 2001-2025 极狐GitLab论坛 版权所有 All Rights Reserved. 鄂ICP备2021008419号-1|鄂公网安备42018502006137号
关灯 快速发帖
扫一扫添加专业顾问
返回顶部
快速回复 返回顶部 返回列表