Отслеживание ветки субмодуля в клонированном репозитории - PullRequest
1 голос
/ 14 мая 2019

Как я могу получить фиксации субмодуля из центрального репозитория, не передавая коммиты субмодуля в вышестоящий репозиторий субмодуля?

Например, допустим, у меня есть центральное хранилище git A, которое я клонирую:

git clone /path/to/A myA1

Теперь я добавляю некоторый репозиторий, который мне не принадлежит, в качестве подмодуля:

git submodule add https://.../B.git myB
git commit -m "Added B submodule"

Я добавляю некоторые изменения в подмодуль B и фиксирую их:

cd myB
echo foo >> x.txt
git add x.txt
git commit -m "changes in local B"
cd -
git commit -m "changes in submodule"
git push   # push commits in local myA1 to central repo A

Но я не могу отправить коммиты в myB вверх по течению до B, потому что я не могу писать в B (это какой-то репозиторий на Github). Когда мои коллеги клонируют центральное хранилище A, их подмодуль ссылается на вышестоящий B репозиторий, а не на A:

git clone /path/to/A myA2

Их запись url в .gitmodules указывает на https://.../B.git, которая не содержит изменений моего коммита.

Как они могут получить изменения, которые я зафиксировал в моем B субмодуле?

1 Ответ

2 голосов
/ 14 мая 2019

Как они могут получить изменения, которые я внес в мой подмодуль B?

Ты не можешь. Если вы хотите внести изменения в подмодуль, вам нужно будет разместить ветвь этого хранилища в том месте, куда вы можете отправить изменения. Затем, когда вы добавляете подмодуль, вы будете использовать ваш URL-адрес хранилища, а не исходный репозиторий:

git submodule add https://new.repository.host/B.git myB

Как правило, для репозиториев, размещенных на GitHub, вы просто разветвляете репозиторий и затем используете его.

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

...