前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >把某个git子目录迁移到新repo的根目录

把某个git子目录迁移到新repo的根目录

作者头像
dhyuan
发布2023-08-28 15:56:53
3450
发布2023-08-28 15:56:53
举报
文章被收录于专栏:响应式编程响应式编程

对项目重构时有这样一个需求,1)要把代码库某个目录下的所有代码作为一个新代码库的根目录,2)并且之前所有的代码提交记录要一并迁移到这个新的git repo。

当你尝试用 git filter-branch --subdirectory-filter YOUR_SUB_DIR -- --all 来解决问题时,会看到一个警告推荐我们使用 git filter-repo。它是一个用于重写git history的多功能小工具,用法参考filter-repo使用手册。我们的需求在这里只是它的一个小case。

下面直接列出操作步骤:

1)安装 git-filter-repo

代码语言:javascript
复制
brew install git-filter-repo

2)Clone 原来的Repo

代码语言:javascript
复制
mkdir codebase
cd codebase
git clone YOUR_GIT_REPO_URL/myProject
cd myProject

3) 拉取所有信息到本地

代码语言:javascript
复制
git fetch --all
git pull --all

4)执行 filter-repo 命令,让某个子目录成为新repo的根目录。

代码语言:javascript
复制
git filter-repo --subdirectory-filter The_SubDir_in_myProject

5) 在github/gitlab创建一个新repo,把这个repo设为这个子目录的remote目标

代码语言:javascript
复制
git remote add origin YOUR_NEW_REPO_GIT_URL

6) 把master的history push到新repo

代码语言:javascript
复制
git branch -M master
git push -uf origin maste

7)把所有branchs/tags都push上去

代码语言:javascript
复制
git push --all origin

这时在新的git repo里应该能看到原来项目的子目录代码的所有commits、branches、tags的信息已经被迁移过来了。

Reference: [1]: https://github.com/newren/git-filter-repo/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 响应式编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1)安装 git-filter-repo
  • 2)Clone 原来的Repo
  • 3) 拉取所有信息到本地
  • 4)执行 filter-repo 命令,让某个子目录成为新repo的根目录。
  • 5) 在github/gitlab创建一个新repo,把这个repo设为这个子目录的remote目标
  • 6) 把master的history push到新repo
  • 7)把所有branchs/tags都push上去
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档