对于一个多模块项目,有一天想把其中一个模块迁移成单独的项目,因为有很多提交,所以想带着提交记录一起迁移。本质上就是:git迁移项目中的某个目录到新项目,包括那一个目录的提交记录。
# 克隆一份新的旧项目, 选择一个分支,比如dev分支
$ git clone -b dev 旧项目git地址
$ cd my-project
# 假如我只需要 service 目录下的东西和其提交记录
$ git filter-branch -f --subdirectory-filter service
# 现在,该项目只剩下 service里的东西了
# 推送到新的git地址
$ git push --mirror 新的git地址
# 然后,在新地址里捣鼓,删掉旧的分支的信息