Я экспериментировал с использованием поддерева git и столкнулся со следующей ситуацией.
Я использовал поддерево git для добавления внешнего проекта в репозиторий, я намеренно сохранил всю историю для вышестоящего проектапоскольку я хочу иметь возможность ссылаться на историю проекта, а также вносить свой вклад в последующий проект позже.
Как выяснилось, другой участник вышестоящего проекта случайно вставил большой файл в основную ветку. Чтобы это исправить, вышестоящий проект переписал историю и принудительно перенес на мастер. При создании моего "monorepo" я включил этот коммит, и я также хотел бы удалить его.
Как я могу обновить свой репозиторий, чтобы отразить новую историю поддерева?
Моя первая попыткабыло использовать filter-branch для полного удаления поддерева и всей истории.
git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch upstream-project-dir' --prune-empty HEAD
Как только старая версия поддерева была удалена, я мог повторно добавить поддерево, используя новый основной канал восходящего потока. Однако это не сработало, потому что по какой-то причине история коммитов по-прежнему отображается в выходных данных журнала git.