Я собираюсь извлечь несколько файлов из репозитория с ~ 10000 коммитов и 5000 файлов в отдельный репозиторий. Эти файлы распределены по нескольким каталогам, и в этих каталогах есть несвязанные файлы.
git filter-branch
--subdirectory-filter
на самом деле не вариант, так как он принимает только один каталог. Кроме того, он не следует переименованиям, поэтому часть истории, если файл был изначально введен в другой каталог, теряется.
Мое текущее решение:
git filter-branch --tree-filter 'fd -E 3166 -X rm -rf'
Где fd
быстрее find
, а 3166
является уникальной частью имени файла всех извлеченных файлов. Что он делает, он проходит через все коммиты, находит все несвязанные файлы и удаляет их. Это ужасно медленно, однако, это занимает часы.
Есть ли лучший подход?