git filter-branch --subdirectory-filter хранит файлы и папки, которые не соответствуют критериям фильтра в истории - PullRequest
0 голосов
/ 28 августа 2018

Я хочу разделить большой 10-летний репозиторий на несколько меньших, используя команду 'git filter-branch --subdirectory-filter'. Проблема в том, что после выполнения шагов, описанных в документации, мой чистый репозиторий все еще содержит коммиты с файлами и папками, которые не соответствуют выражению фильтра.

Что я делаю не так?

Шаги для воспроизведения:

  1. Клонировать репозиторий в новую папку:

    мерзавец клон https://gitlab.com/MyRepo.git

  2. Запустите команду git filter-branch --subdirectory-filter, чтобы удалить все из всех тегов и веток и сохранить только одну конкретную папку:

    git filter-branch --subdirectory-filter Путь / К / Папка --prune-empty --tag-name-filter cat - --all Примечание: я получаю предупреждения "ПРЕДУПРЕЖДЕНИЕ: Ref 'refs / tags / MyTag' is неизменен" для некоторых тегов.

  3. Клонировать репозиторий в другую папку:

    git clone file: /// MyRepo MyRepoClean

  4. Проверьте размер хранилища и найдите большие файлы в хранилище, используя это решение.

Результат: Версия HEAD «чистого» репозитория содержит только файлы, которые изначально находились в папке Path / To / Folder. Однако история содержит файлы и папки из других папок.

Примечания:

  1. Хранилище содержит много тегов.
...