如何从现有Git仓库选取两个文件夹创建新的远程仓库
解决方案
你可以通过Git官方推荐的git filter-repo工具实现多目录拆分,同时保留目录层级和提交历史,具体操作分两种场景:
场景1:需要保留C、D目录的所有历史提交记录
- 提前备份原仓库,避免操作失误导致数据丢失
- 克隆一份原仓库的本地副本作为新仓库的基底:
git clone /path/to/your/local/parent-repo new-repo cd new-repo - 若未安装
git filter-repo,先通过对应系统的包管理器完成安装,之后执行命令裁剪仓库,仅保留C、D两个目录的所有内容和历史:git filter-repo --path C/ --path D/ - 绑定新的GitHub远程仓库地址并推送:
注:如果你的默认分支名为master,将上述命令中的main替换为master即可git remote add origin <你的GitHub新仓库地址> git push -u origin main
场景2:不需要保留C、D的历史提交记录,操作更简便
- 新建空文件夹作为新仓库目录
- 把原仓库中的C、D文件夹完整复制到新目录下
- 新目录内执行初始化、提交、推送操作:
git init git add . git commit -m "init: 导入C、D目录代码" git remote add origin <你的GitHub新仓库地址> git push -u origin main
原仓库忽略C、D目录的处理操作
回到原仓库根目录执行以下操作:
- 编辑
.gitignore文件,新增两行内容:C/ D/ - 将C、D从Git的跟踪列表中移除(不会删除本地文件):
git rm -r --cached C/ D/ - 提交变更即可:
git commit -m "移除C、D目录跟踪,转入独立仓库维护"
内容的提问来源于stack exchange,提问作者Yoon Terry
相关产品推荐
相关产品推荐

