Dado que você tem a seguinte estrutura de diretório em seu repositório:
dir1/
file1
file2
dir2/
file3
file4
dir3/
file5
Se você deseja criar um novo repositório contendo apenas arquivo1 e arquivo2 (e o histórico), você pode executar os seguintes comandos:
git filter-branch --prune-empty --subdirectory-filter dir1 master
git update-ref -d refs/original/refs/heads/master
git filter-branch --prune-empty --index-filter 'git rm -r --cached --ignore-unmatch dir2' --tag-name-filter cat -- --all
Isso lhe dará um novo histórico de todos os commits que contêm arquivo1 e arquivo2