Ответ 1
Вы можете посмотреть git поддержку submodules. Вы добавили бы второй репозиторий в качестве подмодуля в ваш основной проект, например. с командами вроде:
git submodule add git://wherever/blah.git library-code
git commit -m "Added a new submodule called 'library-code'"
Когда вы переходите в подкаталог library-code
, он как будто родительский репозиторий не существует - вы можете изменить origin
, чтобы использовать транспорт, который вы можете нажимать, а затем нажимать так, как будто он полностью независим.
Чтобы указать, что вы хотите, чтобы подмодуль находился в определенной версии, вы должны перейти в подмодуль и использовать git checkout
для переключения в правильную версию. Затем вы возвращаетесь обратно в основной репозиторий и этап и фиксируете эту новую версию подмодуля с помощью:
git add library-code
git commit -m 'Change the submodule version'
Дерево основного репозитория просто хранит версию, на которой должен находиться подмодуль, поэтому, когда вы нажимаете основной репозиторий, он не нажимает ни один из файлов в подмодуле.
Чтобы отделить этот подкаталог, сохраняя историю, вам нужно клонировать ваш оригинальный репозиторий и пользователь git filter-branch
, чтобы переписать историю, как описано в этом ответе:
Затем вы можете нажать это на вновь созданный репозиторий репозитория GitHub, вернуться к исходному проекту, удалить подкаталог и заменить его на подмодуль, как описано выше.
Если вы не очень хорошо знакомы с концепциями git, то это может быть сложно для вас - я бы рекомендовал предварительно прочитать субмодули git.