Как понять рабочий процесс функции подмодуля git - PullRequest
0 голосов
/ 31 января 2019

Я работаю над подмодулем git следующим образом:

1) создать MITTER-проект git-репо, сделать коммит

2) создать SUB-проект git репо, сделать коммит

3) используйте функцию подмодуля git, добавьте SUB в MASTER / somefolder /

4) Затем Алиса делает 2 коммита на SUB, ветвь Алиса.

5) Затем Боб делает 2 коммита,ветвь Боба.

6) Затем я добавляю коммит Алисы и Боба в SUB и MASTER с помощью функции подмодуля.


В этом процессе у меня возникает путаница:

1) В процессе инициализации, который добавляет SUB в MASTER, как MASTER запоминает добавление коммитов в SUB?

Например, если у SUB есть 2 ветви, какие коммиты ветви будут помнить в MASTER?

Если используется главная ветка SUB?Или использовать SUB's HEAD?

Если использовать HEAD, то, если я укажу HEAD в другую ветку SUB (НЕ master), что произойдет?

2) Когда я добавлю 2 коммита Алисы в SUB вМАСТЕР, как МАСТЕР узнает, что я хочу добавить коммит Алисы 2, а не Боба?

Как говорится, MASTER не заботится о ветке SUB, только забота о коммите SUB.


Это мое понимание реализации функции подмодуля git:

MASTER только помнитеОДИН идентификатор фиксации, такой как abcdefg123456.

Тогда, если вы выполните git submodule update --init --recursive, MASTER загрузит все коммиты в расположенной ветке abcdefg123456, пока не произойдет фиксация abcdefg123456.

Это правильно?


Если вышеприведенное верно, то я в замешательстве, Алиса и Боб разветвляют все добавления, если я использую abcdefg123456 в Алисе, как добавить коммиты Боба?

1 Ответ

0 голосов
/ 31 января 2019

Основной репозиторий git (MASTER) и его подмодуль (SUB) следует рассматривать как независимые репозитории .

Возможно, вы уже знаете, что как только вы cd влюбой каталог SUB (или подкаталог), все команды git применяются к SUB (и только к нему).Затем, если вы cd вернетесь в любой каталог MASTER (это не какой-либо другой подмодуль dir), все команды git будут ссылаться на MASTER.

Таким образом, вы правы, единственное, что MASTER помнит оSUB - это удаленный адрес и одиночная ссылка на sha1 (без имени ветви или имени тега).

...