将Git仓库的子目录转换为独立仓库
将子目录拆分为独立Git仓库的实现步骤
1. 前置准备
- 先把父仓库的所有修改提交完毕,避免遗留未处理的内容:
git add . git commit -m "拆分前最后一次提交" - 务必备份整个父目录,防止操作出错丢数据。
2. 逐个拆分子目录为独立仓库
拿其中一个子目录project-X举例,操作如下:
- 在父目录外面新建一个空文件夹,用来放拆分后的仓库:
mkdir ../project-X-new cd ../project-X-new git init - 从原父仓库拉取数据,并只保留
project-X的历史:git pull /绝对路径/到父仓库 master --filter=blob:none git filter-repo --subdirectory-filter project-X要是没有
git filter-repo工具,用旧的git filter-branch也可以:git filter-branch --prune-empty --subdirectory-filter project-X master - 拆分完成后,这个新仓库就只有
project-X的完整提交记录了,后续可以关联远程仓库推送:git remote add origin <你的远程仓库地址> git push -u origin master
重复这个步骤,把所有需要拆分的子目录都处理一遍。
3. 取消父目录的Git仓库身份
回到原父目录,删除Git的核心文件目录即可:
cd /绝对路径/到父仓库 rm -rf .git
这样父目录就不再是Git仓库了。
4. 清理原父目录(可选)
如果不需要保留原父目录里的子目录文件,直接删除对应的文件夹就行;要是想留着本地备份,也可以保留,不影响拆分后的独立仓库。
内容的提问来源于stack exchange,提问作者IDK
相关产品推荐
相关产品推荐

