Каковы концептуальные различия между использованием подмодуля git и поддерева?Различия между подмодулями git и поддеревом
Каковы типичные сценарии для каждого?
Каковы концептуальные различия между использованием подмодуля git и поддерева?Различия между подмодулями git и поддеревом
Каковы типичные сценарии для каждого?
Что делать, если я хочу, чтобы ссылки всегда указывают на ГОЛОВЕ внешнего репо?
Вы можете сделать подмодуль следовать руководитель филиала подмодуль удаленный репозиторий, с:
git submodule add -b <branch> <repository> [<path>]
о. (чтобы указать ответвление)
o git submodule update --remote
, который обновит содержимое подмодуля до последней главы от <repository>/<branch>
, по умолчанию origin/master
. Ваш основной проект по-прежнему будет отслеживать хэши HEAD подмодуля, даже если используется --remote
.
, ваш ответ, похоже, идет против голосованного ответа здесь: http://stackoverflow.com/questions/10443627/force-git-submodule-to-always-stay-current –
Но, может быть, его ответ, если устарел ... –
@NathanH это (возможность отслеживать HEAD) было добавлено через год (март 2013 года, git 1.8.2: https://github.com/git/git/blob/efc8a625e9b03e6f8ceed37ccd4b9167a7447e31 /Documentation/RelNotes/1.8.2.txt#L186-L188) – VonC
Концептуальное различие заключается:
С Git подмодуль вы обычно хотите отделить большое хранилище на более мелкие. Способ ссылки на подмодуль: maven-style - вы ссылаетесь на одно фиксацию из другого (подмодуля) репозитория. Если вам нужно внести изменения в подмодуль, вы должны сделать фиксацию/нажатие внутри субмодуля, а затем ссылаться на новую фиксацию в основном репозитории, а затем зафиксировать/нажать измененную ссылку основного репозитория. Таким образом, вы должны иметь доступ к обеим репозиториям для полной сборки.
С git поддерево вы интегрируете другой репозиторий в свою, включая его историю. Поэтому после его интеграции размер вашего репозитория, вероятно, больше (так что это не стратегия сокращения хранилищ). После интеграции нет подключения к другому репозиторию, и вам не нужен доступ к нему, если вы не хотите получать обновление. Поэтому эта стратегия больше подходит для повторного использования кода и истории - я лично ее не использую.
Но с 'git subtree' вы все равно можете нажать - если хотите - правильно? – Ixx
@lxx Если вы знаете URL-адрес репозитория ... –
Подмодуль - это ссылка;
поддерево скопировать
@WiSaGaN Он * делает * дает ответ. Пожалуйста, обратите больше внимания при рассмотрении. – Rob
@Rob Учитывая, что OP знает о различии между подмодулем и поддеревом и спрашивает, что такое концептуальная разница, и каковы типичные сценарии. Маловероятно, что этот «ответ» полезен для него/нее. Это также однострочный вкладыш, который лучше подходит для комментариев. – WiSaGaN
@WiSaGaN Это делает его ответом низкого качества, а не кандидатом на удаление. Пожалуйста [прочтите это] (http://meta.stackoverflow.com/questions/287563/youre-doing-it-wrong-a-plea-for-sanity-in-the-low-quality-posts-queue) для более Детали. – Rob
подмодуль
толкая основной репозиторий на пульте дистанционного управления не нажмет файлы подмодуль в
поддерево
толкая основной репозиторий для удаленного толкает файлы поддерева
"нажатие основного репо на удаленный файл подталкивает файлы поддерева" Нет, это не так. –
@JBramble Я должен, вероятно, упомянуть, что это сделано с помощью приложения SourceTree, например: 'git -c diff.mnemonicprefix = false -c core.quotepath = false -c credential.helper = sourcetree push -v --tags production refs/heads/мастер: ссылки/головки/master' –
Это может не отвечать на все ваши вопросы, но интересно читать по теме: http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-g it-subtree/ – Chop
Аналогичный вопрос: http://stackoverflow.com/questions/571232/svnexternals-equivalent-in-git/18088319#18088319 –