最近遇到了一种场景,需要把原有的代码从一个 repo
迁移到新的 repo
,同时希望能保留 git
历史。如果只是简单的将文件从一个库迁移到另一个库,没法追溯 git
记录,以后也就不能随意的回退了,所以迁移的时候还是希望尽可能的保留 git
记录。
从网上找了一下方案,在此简单记录一下:
备份想要迁移的repo
plaintext
1 | mdir testClone |
删除原始库的关联
首先进入上一步 clone 下的目录,然后断开与远程原始库的链接(目前是避免不小心污染原始库)
plaintext
1 | cd testClone |
重写分支
这一步涉及了我之前没有使用过的 git 命令:git-filter-branch
- 重写分支 (建议和我一样之前没有使用过的小伙伴看一眼文档, 具体使用不再赘述)
plaintext
1 | git filter-branch --subdirectory-filter |
清除无用的数据
plaintext
1 | git reset --hard |
移动文件到新文件夹 & git commit
plaintext
1 | mkdir |
到此为止,对旧的repo的清理操作大概就结束了,接下来就是如何merge到新的repo中
在新repo中创建一个旧repo的远程连接
plaintext
1 | git remote add testClone |
git pull想要的文件
plaintext
1 | git pull testClone master --allow-unrelated-histories |
移除上面的远程连接&提交文件
plaintext
1 | git remote rm testClone |
最终,删除掉迁移用的testClone和其他无用的文件文件夹,包含git历史的文件就迁移到新repo中啦。
本菜平时是使用了一些基本的git命令,特此记录一下。内心觉得…命令这种东西吧,遇到去搜好了,能解决问题就ok,当然,用过最好还是有印象或者刻意记一下。就这样~