我有一个复杂的git回购从中我想删除ALL文件和历史,除了两个文件夹,让我们说:删除所有除从混帐历史的某些文件夹
foo/a
bar/x/y
虽然git filter-branch --subdirectory-filter
会让我选择一个文件夹,然后创建新的根目录,似乎没有给我任何选择两个目录的选项,并保留它们的位置。
git filter-branch --tree-filter
或--index-filter
看起来像它会让我迭代历史中的每一个提交,我可以在不需要的文件夹上使用git rm
。
我似乎无法找到任何工作方式来获取这些命令,只保留我想要的两个文件夹,同时清除其他所有内容。
谢谢!
的解决办法是: 'git filter-branch --prune-empty --index-filter'git ls-files | grep -vE“foo/a/| bar/x/y /”| xargs git rm -rf --cached --ignore-unmatch'' –