使用git filter-repo提取特定文件创建新Git仓库遇问题求方案
解决方案
首先,操作前先克隆原仓库的干净副本,避免破坏原仓库数据:
git clone <原仓库地址> trimmed-repo cd trimmed-repo
方法1:精确指定保留路径
创建paths.txt文件,内容如下:
.deploy.yml .docker.yml .gitlab-ci.yml pom.xml env/ area/pom.xml cd/pom.xml service/pom.xml
执行命令重写仓库历史,仅保留指定路径的内容:
git filter-repo --paths-from-file paths.txt --force
方法2:排除冗余子目录
如果方法1未生效,可明确排除不需要的子目录。创建exclude.txt文件:
area/folder1/ area/folder2/ area/folder3/ cd/folder4/ cd/folder5/ service/folder6/ service/folder7/
执行命令同时保留目标路径、排除冗余内容:
git filter-repo --paths-from-file paths.txt --exclude-paths-from-file exclude.txt --force
验证结果
执行完命令后,查看目录结构确认效果:
ls -la tree
此时多余的子文件夹会被彻底移除(Git不追踪空文件夹,所以空文件夹不会留存)。
推送到新仓库
将处理后的仓库推送到新远程地址:
git remote add new-origin <新仓库地址> git push -u new-origin --all git push -u new-origin --tags
内容的提问来源于stack exchange,提问作者Alexander
相关产品推荐
相关产品推荐

