Как мне исправить поддерево git после того, как вышестоящая проектная сила была перенесена на master? - PullRequest
3 голосов
/ 07 ноября 2019

Я экспериментировал с использованием поддерева git и столкнулся со следующей ситуацией.

Я использовал поддерево git для добавления внешнего проекта в репозиторий, я намеренно сохранил всю историю для вышестоящего проектапоскольку я хочу иметь возможность ссылаться на историю проекта, а также вносить свой вклад в последующий проект позже.

Как выяснилось, другой участник вышестоящего проекта случайно вставил большой файл в основную ветку. Чтобы это исправить, вышестоящий проект переписал историю и принудительно перенес на мастер. При создании моего "monorepo" я включил этот коммит, и я также хотел бы удалить его.

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

Моя первая попыткабыло использовать filter-branch для полного удаления поддерева и всей истории.

git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch upstream-project-dir' --prune-empty HEAD

Как только старая версия поддерева была удалена, я мог повторно добавить поддерево, используя новый основной канал восходящего потока. Однако это не сработало, потому что по какой-то причине история коммитов по-прежнему отображается в выходных данных журнала git.

...