Подмодули - это самый простой способ добиться этого.
Существует два распространенных способа работы с подмодулями - добавление новых и инициализация существующих.
Добавление новых подмодули
Из корня вашего локального запуска хранилища:
git submodule add <repository> external/engage.iphone
.
Команда add
предназначена для первоначального добавления подмодуля в репозиторий, в отличие от того, когда вы клонировали репозиторий с существующими подмодулями). Он добавляет другой репозиторий, который может находиться на локальном или удаленном пути (помните, что другим разработчикам нужен доступ к этому, если вы публикуете свой репозиторий!) В файле .gitmodules в корне репозитория, а затем клонирует репозиторий в указанное вами местоположение; external/engage.iphone
в приведенном выше примере. На этом этапе у вас есть файлы субрепозитория в вашей системе, и он указан как подмодуль в файле .gitmodules, в конфигурации локальных репозиториев.
Однако вы можете не добавлять Подмодулям себя ...
Инициирования Существующих Подмодулей
Вещи немного изменить, если вы клонировать репозиторий, который уже имеет Подмодули добавили к нему. В этой ситуации файл .gitmodules будет иметь подмодули, перечисленные в нем, с местоположениями для их извлечения, но ваш локальный конфигуратор репозитория ничего не знает о них, а фактические файлы еще не существуют в вашей системе. Прежде всего, необходимо инициализировать подмодули:
git submodule init
Это будет работать через любые репозитории, перечисленные в ваших .gitmodules и добавить их в свой .git/конфигурацию. Git теперь знает о хранилище, но он на самом деле не клонирован еще, так что бежать:
git submodule update
Вы можете запустить эту команду в любое время для обновления зарегистрированных подмодулей, то есть клона недостающего.
git submodule sync <submodule>
Выполнить это, чтобы обновить все подмодули их дистанционной ГОЛОВУ, если не указано конкретное обязательство, когда ты подмодуль добавить! Задание определенного подмодуля будет только синхронизировать его.
В истинном мерзавца моде команда init
можно комбинировать с update
сэкономить время:
git submodule update --init
.
Конечно, вы всегда можете вручную обновлять свои .gitmodules и .git/config, как только вы изучили макет, который они используют (аналогично ветвям и удаленным разделам в конфигурации).
Все особенности можно найти на странице руководства (kernel.org version).
Спасибо. Я получаю эту ошибку сейчас: «Нет отображения подмодуля, найденного в .gitmodules для пути« заниматься. Iphone/Contrib/json-framework »« ... любые идеи? –
... это происходит, когда я запускаю «git submodule init» –
@SteveN Как вы запустили команду add? И что он вложил в ваши .gitmodules? – ghickman