Я недавно извлек несколько подкаталогов из общего репозитория git с помощью
git filter-branch --subdirectory-filter foodir -- --all
Теперь у меня все еще остались подкаталоги в центральном общем репозитории, и я хотел бы удалить их.Насколько я понял из поиска в Интернете что-то вроде
git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename' HEAD
должно быть использовано для удаления старых каталогов из истории.
Хотя я считаю, что это сработает, сейчас мне интересно, является ли это наилучшим способом удаления чего-либо из истории в случае общего доступа к хранилищу, поскольку я понял, что каждый, у кого есть локальный клон, в основномповторно клонировать репозиторий?
Итак, мой последний вопрос: я прав с этими предположениями или есть способ удалить каталоги из нескольких ветвей в истории без необходимости повторного клонирования репозитория?
ОБНОВЛЕНИЕ
Итак, я выполнил несколько тестов и в настоящее время выполняется с этой командой: git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch -- Dir1 DIR2' --prune-empty --tag-name-filter cat -- --all
, которая работает, но также полностью меняет все ключи SHA-1 всех коммитов, что понятно, ноне желательноИ это будет означать, что все должны повторно клонировать репозиторий, и все предыдущие ссылки через Gitweb будут прерваны.