Ваше описание все еще не совсем понятно для меня, но, похоже, вам может понадобиться использовать подмодуль , объединение поддеревьев или git subtree
(сторонний инструмент).
Вам, вероятно, следует спросить у своего проекта, есть ли планы относительно того, как справиться с такой ситуацией. Кто-то, возможно, уже запланировал, как интегрировать контент из «базовых» репозиториев в остальную часть кода в «основном» репозитории.
Подмодули - это стандартный способ публикации ссылки из одного репозитория в другой (с использованием специальных записей дерева «gitlink» и данных в файле .gitmodules
). Использование субмодулей позволяет другим пользователям восстанавливать настройки репозитория внутри репозитория, которые (похоже на) вы создали локально во время разработки.
Использование подмодулей потребует некоторых изменений рабочего процесса для любых других людей, которым необходим доступ к ним (например, git submodule update
(с --init
в первый раз), чтобы убедиться, что у них есть правильная фиксация субрепозиторного коммита после обновления (например, извлечение) «Основной» репозиторий).
A объединение поддеревьев - это способ прямого включения содержимого из несвязанного коммита (например, из хранилища библиотеки) в поддерево (подкаталог) вашего основного проекта. Только пользователи, которым нужно загружать (или выгружать) обновления контента в поддереве, на самом деле должны делать что-то иначе (например, они могут использовать git merge -s subtree
для объединения обновлений в историю источника). Некоторым людям не нравятся слияния поддеревьев, поскольку они включают («загрязняет») историю основного проекта с копией истории поддерева.
Инструмент git subtree
(сторонний инструмент) может помочь управлять обычными объединениями поддеревьев. Например, подкоманда git subtree split
может принимать коммиты, сделанные поверх истории основного репозитория, и переписывать их так, чтобы они отображались поверх оригинальной истории поддерева. Это позволяет легко вносить «локальные» изменения в содержимое поддерева, а затем выдвигать их «вверх по течению». Он также имеет режим --squash
, который дает большую часть преимуществ обычного слияния поддеревьев, предотвращая при этом «загрязнение» истории.
У автора git subtree
есть , связанный с учебником , который кажется довольно полезным.