Возможно ли иметь репозиторий git внутри другого репозитория git

У меня есть проект django, управляемый с помощью git. Я git, нажимая его на мой хост. Теперь я хочу, чтобы иметь возможность выталкивать только один из каталогов (вкл. Все поддиректории) в другой репо git. Как это возможно, если это вообще возможно?

Изменить: Таким образом, я хочу, чтобы этот каталог был репозиторией git.

Ответ 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.

Ответ 2

Когда вы вносите изменения в конкретный каталог, выполняете эти изменения и фиксируете и нажимаете, вы фактически "толкаете" именно этот каталог.

Если у другого репо Git есть только каталог, который вы хотите нажать, и именно поэтому вы хотите, чтобы он был как репо сам по себе, вы можете посмотреть Git Субмодули.

Ответ 3

Вы заглянули в подмодули? Он позволяет git репозиториям чисто гнездовать, но остается полностью независимым.

Это означает, что у вас может быть подкаталог с другим удаленным url для push/pull и другого дерева фиксации + log без загромождения основного проекта.

https://git.wiki.kernel.org/index.php/GitSubmoduleTutorial