Создание нескольких вложенных репозиториев git внутри родительского репозитория git
Я хочу создать родительское git-репо, внутри которого будет несколько git-репо, но я не хочу, чтобы родительское git-репо отслеживало все коммиты суб-репо. История коммитов может быть размещена в отдельных суб-репо. Я просто хочу, чтобы при извлечении из родительского репо я хотел, чтобы все вспомогательные репо были извлечены, а когда я выталкиваю родительское репо, все зафиксированные изменения вложенных репо должны быть помещены в соответствующие репо на сервере. Кроме того, он должен иметь возможность выдвигать и извлекать отдельные репозитории git, когда мы вносим некоторые изменения в любой из подпунктов, и в следующий раз при извлечении родительского репо должны появиться обновленные репо.
Я пытаюсь использовать подмодули / поддерево, но не смог достичь этого. Я слышал о git subrepo, но не смог найти хороший учебник по нему
1 ответ
но я не хочу, чтобы родительское git-репо отслеживало все коммиты суб-репо
Это именно то, что делает подмодуль git: родительское репо записывает только главное дерево репо SHA1, называемое gitlink ( специальная запись в родительском репо)
Каждый раз, когда вы делаете один или несколько коммитов в рамках одного из вложенных репо (и возвращаетесь к своему удаленному репо по восходящему каналу), родительское репо не будет ничего записывать, пока вы не вернетесь к указанному родительскому репо, не добавите, не подтвердите и не отправите.
Но вы добавите и зафиксируете только один элемент: gitlink, то есть новый SHA1, представляющий корневое дерево измененного подпредставления.
Когда вы клонируете родительское репо, сделайте это с помощью git clone --recurse-submodule:
git clone --recurse-submodule /url/parent/repo
Это автоматически клонирует все вложенные репо с их точным SHA1, ранее записанным родительским репо.