У меня есть структура папок репо:
git-base
custom
app1
app1_file.txt
app2_file.txt
app2
app2_file.txt
app2_file.txt
В app1 и app2 много файлов, и они находятся на удаленном компьютере с историей git. Мне нужно перенести пользовательскую папку в качестве нового базового репо при фильтрации файлов в приложениях app1 и app2 на основе их содержимого. Таким образом, только файлы app1_file1.txt и app2_file.txt (многие другие файлы, но только пример) являются файлами-кандидатами для нового репо.
Мой подход:
У меня есть скрипт, который перемещает все файлы, которые не являются кандидатами на новое репо в папку с именем discard (в этой папке есть подпапка с 1000 файлами). Я фиксирую (ха sh: delete123) их и git распознает их как переименования файлов.
, тогда
git filter-branch -f --index-filter 'git rm -r --cached --ignore-unmatch git-base/custom/discard/' -- --all
git filter-branch --subdirectory-filter git-base/custom/ -- --all
git reset --hard
git gc --aggressive
git prune
git clean -fd
git по-прежнему имеет историю коммитов для сброса фиксации файла ( ха sh: delet123), к которому я могу откатиться. Когда я добавляю это в новый репозиторий, я не хочу сохранять историю для удаления папки или содержимого этой папки.
Я пробовал древовидный фильтр (который по сути такой же, как индексный), но не повезло. Я не хочу делать индексный фильтр для каждого файла в папках app1 и app2, которые не являются кандидатами для нового репо. Есть ли способ удалить содержимое папки «Отменить», чтобы ее не было в новой истории репо?