Посмотрите на git-filter-branch (1) , который представляет собой швейцарский армейский нож Git для автоматического переписывания истории, и он, безусловно, позволяет всем коммитам касаться определенного набора файлов (и удалятьеще).
Как это использовать подробно, зависит от вашего реального хранилища.Если, например, все файлы, которые вы хотите сохранить, уже аккуратно содержатся в подкаталоге (скажем, foobar
), то будет достаточно следующего:
git filter-branch --subdirectory-filter foobar --prune-empty -- --all
В качестве альтернативы вы можете использоватьЧтобы удалить все файлы, кроме тех, которые вы хотите сохранить из своего хранилища, выполните следующие действия:
git filter-branch --tree-filter 'rm -f filename1 pattern2.*' --prune-empty -- --all