Почему git-filter-branch не переписывает теги? - PullRequest
9 голосов
/ 06 октября 2011

Мне нужно было разделить мой репозиторий на две части.Я использовал шаги, показанные здесь: Отсоединение (перемещение) подкаталога в отдельный репозиторий Git

Я использовал команду:

 git filter-branch --subdirectory-filter ABC HEAD -- --all

, которая, казалось, работала нормально и ушлая с ABC в качестве корня.

Однако теперь, если я пытаюсь извлечь тег, который существовал до того, как разделить репозиторий:

 git checkout an-old-tagname

, это воссоздает старую структуру каталогов - таким образом, воссоздает ABCв качестве подкаталога, наряду с XYZ1 и XYZ2.

Я знаю, что именно репозиторий действительно выглядел в тот момент - но я хочу, чтобы тег ссылался только на биты ABC, как если бы они былив корне тогда.Я думал, что это то, чем занималась ветвь фильтра, когда переписывала историю, но, очевидно, я неправильно это понимаю.

Как мне переписать теги, чтобы я мог вернуться назад во времени, оставаяськорень репо в ABC?

1 Ответ

18 голосов
/ 06 октября 2011

Вам нужно указать

--tag-name-filter cat

для перезаписи тегов

Теперь вы можете сделать

git filter-branch --tag-name-filter cat ... другие параметры фильтра ... -- --tags

где ... другие параметры фильтра ... повторяетсяфильтры, которые вы ранее применяли.

...