Почему git-filter-branch не переписывает теги?
Мне нужно было разделить мой репозиторий на две части. Я использовал шаги, показанные здесь: Отсоединить (переместить) подкаталог в отдельный Git-репозиторий
Команда, которую я использовал, была:
git filter-branch --subdirectory-filter ABC HEAD -- --all
который, казалось, работал нормально и оставил меня с ABC в качестве корня.
Однако теперь, если я попытаюсь извлечь тег, который существовал до того, как разделить репо:
git checkout an-old-tagname
он воссоздает старую структуру каталогов, поэтому воссоздает ABC как подкаталог вместе с XYZ1 и XYZ2.
Я знаю, что именно так репозиторий действительно выглядел в тот момент - но я хочу, чтобы тег ссылался только на биты ABC, как если бы они были в корне тогда. Я думал, что это то, что делает фильтр-ветвь, когда переписывает историю, но, очевидно, я не обращаю на это должного внимания.
Как я могу переписать теги, чтобы я мог вернуться назад во времени, оставаясь при этом в качестве корня репозитория ABC?
1 ответ
Вам необходимо указать
--tag-name-filter cat
переписать теги
Теперь вы можете сделать
git filter-branch --tag-name-filter cat
... другие параметры фильтра...-- --tags
где ... другие параметры фильтра... повторяет фильтры, которые вы применяли ранее.