Обновление март 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
Если у вас подмодуль уже представить вам сейчас желание будет отслеживать ветку, увидеть « как сделать существующий подмодуль отслеживать ветвь ».
Также см. Учебник Вогеллы по подмодулям для получения общей информации о подмодулях.
Примечание:
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 (на который вы уже смотрели) кажется наиболее подходящим, в том числе для операции фиксации .
Немного раздражает вносить изменения в подмодуль из-за необходимости проверить правильную ветвь подмодуля, внести изменения, зафиксировать, а затем перейти в суперпроект и зафиксировать коммит (или, по крайней мере, записать новое местоположение модуля). подмодуль).
Другие альтернативы подробно описаны здесь .