Включить каталог репозитория git в собственный с полной функциональностью
Недавно мы решили отделить подпроект foo от нашего основного проекта. Мы не хотим включать все foo, например, все тесты, связанные с foo, можно безопасно хранить в foo /.
Теперь у меня есть два хранилища:
main/
include/folder1
include/foo/
Test/
foo/
include/...
Test/...
и я хотел бы заменить main / include / foo на foo / include. Это возможно с помощью git subtree split
, Проблема в том, что это переписывает историю, и я не уверен, как изменения в main / include / foo можно перенести в / foo / include. git subtree push -P include/foo/ foo
дает ужасные результаты.
Кто-нибудь знает, как это сделать правильно?
1 ответ
Вы должны сделать раскол с git subtree split ...
как вы сделали, но если вы хотите, чтобы это было в отдельном хранилище, используйте git submodule
иметь его в качестве внутреннего репо в отдельном репозитории.
Submodules
разрешить встраивание внешних репозиториев в выделенный подкаталог дерева исходных текстов, всегда указывающий на конкретный коммит.
git submodule
Разбейте ваш большой проект на подпроекты, как вы делали до сих пор.
Теперь добавьте каждый подпроект в основной проект, используя:
git submodule add <url>
После того, как прогноз будет добавлен к вашему репо, вы должны его инициализировать и обновить.
git submodule init
git submodule update
Это иллюстрация субмодуля - проекта внутри другого проекта, в котором каждый проект является отдельным проектом.
git subtree
Git поддерево позволяет вам вставить любой репозиторий как подкаталог другого
Очень похоже на submodule
но главное отличие в том, где ваш код управляется. В подмодулях контент размещается внутри отдельного репо и управляется там, что позволяет вам клонировать его и во многие другие репо.
subtree
управляет контентом как частью корневого проекта, а не как отдельный проект.
Вместо того, чтобы записывать, как его настроить и понять, как его использовать, вы можете просто прочитать этот отличный пост, который объяснит все это.
https://developer.atlassian.com/blog/2015/05/the-power-of-git-subtree/