Как настроить проект git для использования внешнего подмодуля репо?

Я хотел бы создать репо, которое вытягивает дистанционное репо.

Например, пусть jQuery как подмодуль:

git://github.com/jquery/jquery.git

Каким будет процесс создания репо с jQuery в качестве подмодуля и добавление моего внешнего внешнего репозитория.

Также, когда это будет установлено, если я нажимаю/тяну на свой собственный пульт, будет ли внешний объект оставаться неповрежденным?

+190
источник поделиться
4 ответа
  • У вас есть проект - назовите его MyWebApp, у которого уже есть github repo
  • Вы хотите использовать репозиторий jquery в своем проекте
  • Вы хотите перенести репозиторий jquery в свой проект как подмодуль.

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

cd MyWebApp
git submodule add git://github.com/jquery/jquery.git externals/jquery

Это создаст каталог с именем externals/jquery * и свяжет его с репозиторием github jquery. Теперь нам просто нужно инициализировать подмодуль и клонировать код:

git submodule update --init --recursive

Теперь вы должны иметь весь последний код, клонированный в подмодуль. Если jQuery repo изменится, и вы хотите удалить последний код, просто введите команду submodule update еще раз. Обратите внимание: у меня обычно есть несколько внешних репозиториев в моих проектах, поэтому я всегда группирую репозиции в каталоге "externals".

Онлайн Pro Git Книга содержит некоторую полезную информацию о подмодулях (и Git в целом), представленных в удобном для чтения виде. Альтернативно, git help submodule также даст хорошую информацию. Или взгляните на Git учебник по субмодулям на wiki Git.

Я заметил эту запись в блоге, которая рассказывает о подмодулях и сравнивает их с механизмом Subversion svn: externals: http://speirs.org/blog/2009/5/11/understanding-git-submodules.html

* Как наилучшая практика, вы всегда должны размещать свои подмодули в своем собственном каталоге, таком как внешние. Если вы этого не сделаете, ваш каталог корневых проектов может стать очень загроможденным.

+301
источник

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

Как вы знаете, "git pull" не обновляет подмодули, а "git обновление подмодулей" не будет загружать последнюю HEAD этих подмодулей.

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

git submodule foreach git pull

Если вы часто меняете свои подмодули и имеете много, тогда "git foreach" станет бесценным.

+17
источник
другие ответы

Связанные вопросы


Похожие вопросы

В конце концов я обнаружил http://github.com/evilchelu/braid, который, казалось, соответствовал тому, как я ожидал, что подмодули и пульты будут работать

+2
источник

Я думаю, что ответ @Hugo может быть тем, что вам нужно, и работает нормально. Поэтому я нашел более простой способ.

git submodule update --remote

Что все.

Таким образом, полный рабочий процесс может быть:

git clone project-with-submodules
git submodule init
git config -l
git submodule update --remote
0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос