git 迁移项目中某个目录到一个已经存在的项目

Posted 汪小哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git 迁移项目中某个目录到一个已经存在的项目相关的知识,希望对你有一定的参考价值。

git 迁移项目中某个目录到一个已经存在的项目

需求

需求,一个多模块的项目要将其中的部分功能迁移到一个新的项目,带着提交记录一起迁移,新项目git 已经存在部分目录。核心需求就是想带着git 提交记录一起去。

步骤

1、克隆到自己本地

git clone git@github.com:mybatis/spring-boot-starter.git

目录list

$ ls -l | grep  'mybatis'
drwxr-xr-x   6 wangji  staff    192 12 20 23:09 mybatis-spring-boot-autoconfigure
drwxr-xr-x  17 wangji  staff    544 12 20 23:09 mybatis-spring-boot-samples
drwxr-xr-x   5 wangji  staff    160 12 20 23:09 mybatis-spring-boot-starter
drwxr-xr-x   5 wangji  staff    160 12 20 23:09 mybatis-spring-boot-starter-test
drwxr-xr-x   6 wangji  staff    192 12 20 23:09 mybatis-spring-boot-test-autoconfigure

2、 过滤自己需求的目录

以 mybatis-spring-boot-samples 为例子

$ git filter-branch -f --subdirectory-filter mybatis-spring-boot-samples
Rewrite ecdbae5e25b2f74b53a7c6ac33bb3acdd4b77a36 (193/209) (11 seconds passed, remaining 0 predicted)
Ref 'refs/heads/master' was rewritten

目录list,这里其他的都被删除了 mybatis-spring-boot-samples 作为主目录了

$ ls -l | grep  'mybatis'
drwxr-xr-x  6 wangji  staff   192 12 20 23:13 mybatis-spring-boot-sample-annotation
drwxr-xr-x  6 wangji  staff   192 12 20 23:13 mybatis-spring-boot-sample-freemarker
drwxr-xr-x  6 wangji  staff   192 12 20 23:13 mybatis-spring-boot-sample-freemarker-legacy
drwxr-xr-x  6 wangji  staff   192 12 20 23:13 mybatis-spring-boot-sample-groovy
drwxr-xr-x  6 wangji  staff   192 12 20 23:13 mybatis-spring-boot-sample-kotlin
drwxr-xr-x  6 wangji  staff   192 12 20 23:13 mybatis-spring-boot-sample-thymeleaf
drwxr-xr-x  6 wangji  staff   192 12 20 23:13 mybatis-spring-boot-sample-velocity
drwxr-xr-x  6 wangji  staff   192 12 20 23:13 mybatis-spring-boot-sample-velocity-legacy
drwxr-xr-x  6 wangji  staff   192 12 20 23:13 mybatis-spring-boot-sample-war
drwxr-xr-x  6 wangji  staff   192 12 20 23:13 mybatis-spring-boot-sample-web
drwxr-xr-x  6 wangji  staff   192 12 20 23:13 mybatis-spring-boot-sample-xml

3、推送到目标git 地址 目标仓库

从当前master分支推送一个到远程的新项目origin/test 分支

git push git@git@github.com:xxxPerson/test.git/test.git master:origin/test

日志记录

$ git push git@git@github.com:xxxPerson/test.git/test.git master:origin/test
Enumerating objects: 2728, done.
Counting objects: 100% (2728/2728), done.
Delta compression using up to 4 threads.
Compressing objects: 100% (1057/1057), done.
Writing objects: 100% (2728/2728), 268.16 KiB | 12.19 MiB/s, done.
Total 2728 (delta 1284), reused 2467 (delta 1177)
remote: Resolving deltas: 100% (1284/1284), done.
To git@github.com:xxxPerson/test.git/test.git
 * [new branch]        master -> origin/test

4、基于这个分支在改改改

基于这个分支在改改改… 然后和主干合并一下即可,有了提交记录…

以上是关于git 迁移项目中某个目录到一个已经存在的项目的主要内容,如果未能解决你的问题,请参考以下文章

git 迁移项目中某个目录到一个已经存在的项目

git 迁移项目中某个目录到一个已经存在的项目

git 迁移项目中某个目录到一个已经存在的项目

Git项目迁移-保留分支和提交记录

从 SVN 迁移到 Git 存储库,其中同一项目的一部分已经发生迁移

利用gitrepo无缝迁移git项目