我有一個複雜的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'' –