Различия между подмодулем git и поддеревом


каковы концептуальные различия между использованием подмодуля git и поддерева?

каковы типичные сценарии для каждого?

4 222

4 ответа:

что делать, если я хочу, чтобы ссылки всегда указывали на главу внешнего РЕПО?

вы можете сделать подмодуль следовать за головкой ветви подмодуля удаленного РЕПО, с:

o git submodule add -b <branch> <repository> [<path>]. (чтобы указать ветку, чтобы следовать)
o git submodule update --remote который обновит содержимое подмодуля до последней головки от <repository>/<branch> по умолчанию origin/master. Ваш основной проект по-прежнему будет отслеживать хэши главы подмодуля, даже если --remote хотя используется.


подмодуль связь;

поддерево-это копия

концептуальное различие:

с git подмодули обычно требуется разделить большой репозиторий на более мелкие. Способ ссылки на подмодуль мавен-стиль - вы ссылаетесь на одну фиксацию из другого репозитория (подмодуля). Если вам нужно изменить внутри подмодуля, вы должны сделать фиксацию / push внутри подмодуля, а затем ссылаться на новую фиксацию в главном репозитории, а затем фиксировать / push измененную ссылку главное хранилище. Таким образом, вы должны иметь доступ к репозиториям для полной сборки.

с git поддерево вы интегрируете другой репозиторий в свой, включая его историю. Поэтому после его интеграции размер вашего репозитория, вероятно, больше (так что это не стратегия, чтобы держать репозитории меньше). После интеграции нет подключения к другому репозиторию, и вам не нужен доступ к нему, если вы не хотите получить обновление. Итак, эта стратегия больше для повторного использования кода и истории - я лично его не использую.

суб-модуль
нажатие основного РЕПО на пульт не толкает файлы субмодуля

суб-дерево
нажатие основного РЕПО на удаленное выталкивает файлы под-дерева