Вы можете посмотреть поддержку git для подмодулей .Вы добавили бы второй репозиторий в качестве подмодуля в ваш основной проект, например, с помощью команд вроде:
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.