Подтвердить что ты не робот

Git репозиторий внутри другого хранилища Git

У меня есть следующая структура каталогов:

  • g1/
    • .git
    • а
    • б
    • с /
      • .git
      • д
      • е

Как вы можете видеть, у меня есть репозиторий "c" внутри репозитория "g1". Когда я использую следующую команду:

git clone g1 g2

Я получаю только следующую структуру каталогов:

  • g1/
    • .git
    • а
    • б
    • с /

Каталог "c" остается пустым. Любые идеи?

4b9b3361

Ответ 1

Подмодули (обсуждаются в Pro Git Book), помогает управлять репозиториями, вложенными в основной репозиторий:

Субмодули разрешают зарубежные репозитории быть встроенным в подкаталог исходного дерева, всегда указывал на конкретную фиксацию.

Их не следует путать с пульты, которые предназначены главным образом для ветки одного и того же проекта; Подмодули предназначены для разных проекты, которые вы хотели бы сделать вашего исходного дерева, а история из двух проектов все еще остается полностью независимы, и вы не можете изменить содержание подмодуля из основного проекта.

Субмодули поддерживают свои собственные идентичность; поддержка подмодулей просто хранит репозиторий подмодулей местоположение и идентификатор фиксации, так что другие разработчики, которые клонируют суперпроект может легко клонировать все подмодули в та же ревизия.

Ответ 2

Git 2.5+ (Q2 2015) будет немного более точным в том, как он представляет собой подмодуль.
Поскольку подмодуль зарегистрирован как gitlink (специальная запись в индексе), что объясняет, почему 'c' пуст при клонировании родительского репо.
См. Также "git submodule проверяет тот же коммит".
Вам нужно git submodule update --init заполнить 'c'.

Это теперь более четко документировано.

См. передать ec48a76 (27 мая 2015 г.) Стефан Беллер (stefanbeller).
(слияние Junio ​​C Hamano - gitster - в совершить 7df5c97, 11 июня 2015 г.)

submodule doc: переупорядочить вводные параграфы

Лучше запустить справочную страницу с описанием того, что подмодули на самом деле, вместо того, чтобы говорить, что они не являются.

Теперь git submodule man page (июнь 2015) начинается с:

Подмодуль позволяет вам хранить еще один репозиторий Git в подкаталоге вашего репозитория.
В другом репозитории есть своя история, которая не мешает истории текущего репозитория.
Это может быть использовано для внешних зависимостей, таких как, например, сторонние библиотеки.

При клонировании или вытягивании репозитория, содержащего подмодули, они не будут проверены по умолчанию; 'init' и 'update' подкоманды будут проверять субмодули и на соответствующий пересмотр в рабочем дереве.