Различия между подмодулем git и поддеревом
каковы концептуальные различия между использованием подмодуля git и поддерева?
каковы типичные сценарии для каждого?
4 ответа:
- субмодуль лучше подходит для разработка на основе компонентов, где ваш главный проект зависит от фиксированной версии другого компонента (РЕПО).
Вы сохраняете только ссылки в своем родительском РЕПО (gitlinks,специальные записи в индексе)что делать, если я хочу, чтобы ссылки всегда указывали на главу внешнего РЕПО?
вы можете сделать подмодуль следовать за головкой ветви подмодуля удаленного РЕПО, с:
o
git submodule add -b <branch> <repository> [<path>]
. (чтобы указать ветку, чтобы следовать)
ogit submodule update --remote
который обновит содержимое подмодуля до последней головки от<repository>/<branch>
по умолчаниюorigin/master
. Ваш основной проект по-прежнему будет отслеживать хэши главы подмодуля, даже если--remote
хотя используется.
- поддерева еще как на основе системы развитие, где все ваше РЕПО содержит все сразу, и вы можете изменить любую часть.
Смотрите пример в этом ответе.
концептуальное различие:
с git подмодули обычно требуется разделить большой репозиторий на более мелкие. Способ ссылки на подмодуль мавен-стиль - вы ссылаетесь на одну фиксацию из другого репозитория (подмодуля). Если вам нужно изменить внутри подмодуля, вы должны сделать фиксацию / push внутри подмодуля, а затем ссылаться на новую фиксацию в главном репозитории, а затем фиксировать / push измененную ссылку главное хранилище. Таким образом, вы должны иметь доступ к репозиториям для полной сборки.
с git поддерево вы интегрируете другой репозиторий в свой, включая его историю. Поэтому после его интеграции размер вашего репозитория, вероятно, больше (так что это не стратегия, чтобы держать репозитории меньше). После интеграции нет подключения к другому репозиторию, и вам не нужен доступ к нему, если вы не хотите получить обновление. Итак, эта стратегия больше для повторного использования кода и истории - я лично его не использую.