Git-репозиторий внутри другого Git-репозитория - PullRequest
30 голосов
/ 11 августа 2010

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

  • g1 /
    • .git
    • а
    • B
    • с /
      • .git
      • * * д тысячу двадцать-один * ** 1 022 1023 *
      • е

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

git clone g1 g2

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

  • g1 /
    • .git
    • а
  • с /

Каталог "c" остается пустым. Есть идеи?

Ответы [ 2 ]

37 голосов
/ 11 августа 2010

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

Подмодули позволяют встраивать внешние репозиториив выделенном подкаталоге дерева исходных текстов всегда указывает на конкретный коммит.

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

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

2 голосов
/ 15 июня 2015

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

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

См. commit ec48a76 (27 мая 2015 г.) Stefan Beller (stefanbeller) .
(Объединено Junio ​​C Hamano - gitster - в коммит 7df5c97 , 11 июня 2015 г.)

submodule doc: изменить порядок вступительных абзацев

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

Справочная страница git submodule сейчас (июнь 2015 г.) начинается с:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...