2025-02-25
技术文档
00

目录

操作方法

在之前的重构中,在本地新建了一个项目ExtraTestCase,并且作为本地git仓库进行了若干次提交

现在在gitblit上新建了一个仓库将项目做统一管理,仓库名为AstrobTestScript

本地的ExtraTestCase作为一个子模块路径为AstrobTestScript/ExtraTestCase

如果直接拉去远端仓库,将本地的ExtraTestCase复制进来一笔提交,就会丢失曾经的提交记录,不利于后期维护

操作方法

  • 使用第三方库 git-filter-repo来完成

  • 进入本地的ExtraTestCase路径

bash
cd /d/python/project/ExtractTestCase
  • 安装第三方库
bash
pip install git-filter-repo
  • 重写历史记录
bash
git filter-repo --force --path-rename :ExtractTestCase/

提示

其中参数的含义是 分号左边为根目录,右边为新项目中的相对路径,即新项目中ExtractTestCase作为本地项目的根路径

  • 切换到新项目仓库
bash
cd /d/project/AstrobTestScript/
  • 将本地仓库添加为新项目的远程仓库
bash
git remote add local_repo /d/python/project/ExtractTestCase
  • 将远程仓库的代码同步到当前分支
bash
git fetch local_repo
  • 合并历史
bash
git merge local_repo/master --allow-unrelated-histories
  • 删除远程仓库
bash
git remote remove local_repo

通过以上操作即可完成本地git仓库作为子模块向新仓库提交并且保存git history不丢失

本文作者:Yaki

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!