Ответ 1
Обновление март 2013
В Git 1.8.2 добавлена возможность отслеживать ветки.
"
git submodule
" начал изучать новый режим интеграции с кончиком удаленной ветки (в отличие от интеграции с фиксацией, записанной в суперпроекте gitlink).
# add submodule to track master branch
git submodule add -b master [URL to Git repo];
# update your submodule
git submodule update --remote
Если у вас уже был субмодуль, который вы хотите отслеживать ветку, см. " Как сделать существующий субмодуль отслеживающим ветку ".
Также см. Учебник Vogella по подмодулям для получения общей информации о подмодулях.
Замечания:
git submodule add -b . [URL to Git repo];
^^^
Смотрите страницу git submodule
:
Особая ценность
.
используется, чтобы указать, что имя ветки в подмодуле должно совпадать с именем текущей ветки в текущем репозитории.
Смотрите коммит b928922727d6691a3bdc28160f93f25712c565f6:
submodule add
: если --branch
, запишите его в .gitmodules
Это позволяет вам легко записывать
submodule.<name>.branch
опция в.gitmodules
когда вы добавляете новый субмодуль. С этим патчем
$ git submodule add -b <branch> <repository> [<path>]
$ git config -f .gitmodules submodule.<path>.branch <branch>
сводится к
$ git submodule add -b <branch> <repository> [<path>]
Это означает, что будущие звонки
$ git submodule update --remote ...
получит обновления из той же ветки, которую вы использовали для инициализации субмодуля, что обычно и требуется.
Подписано: У. Тревор Кинг
Оригинальный ответ (февраль 2012 г.):
Подмодуль - это отдельный коммит, на который ссылается родительское репо.
Поскольку это Git-репо само по себе, "история всех коммитов" доступна через git log
в этом подмодуле.
Таким образом, чтобы родительский элемент автоматически отслеживал последний коммит данной ветки подмодуля, ему необходимо:
- CD в подмодуле
- git fetch/pull, чтобы убедиться, что он имеет последние коммиты в правой ветке
- CD в родительском репо
- добавить и зафиксировать, чтобы записать новый коммит подмодуля.
gitslave (на который вы уже смотрели) кажется наиболее подходящим, в том числе для операции фиксации.
Немного раздражает вносить изменения в подмодуль из-за необходимости проверить правильную ветвь подмодуля, внести изменения, зафиксировать, а затем перейти в суперпроект и зафиксировать коммит (или, по крайней мере, записать новое местоположение модуля). подмодуль).
Другие альтернативы подробно описаны здесь.