У меня была похожая проблема: клон репо на ПК (A) с удаленным на внешнем веб-сайте, и я хотел иметь клон моего локального репо на другом ПК (B) в той же сети, где я могперенести мои изменения в (через ssh) и выполнить несколько тестов (некоторые из моих регрессионных тестов занимают очень много времени), чтобы я мог продолжить работу с (A) в другой ветви, если это необходимо.Репо в (А) имеет подмодуль.
Я создал голое репо в (B):
mkdir /path/to/bare_git && cd /path/to/bare_git
git --bare init
и добавил его в качестве нового пульта в моем локальном репо в (A):
git add remote name_of_B_repo ssh://user@host/path/to/bare_git/
ивыдвинул локальное репо в (A) (возможно, с изменениями, которые еще не были обнародованы) в мое репозиторий ssh:
git push name_of_B_repo branch_to_push
После этого я клонировал свое голое репо изнутри (B):
mkdir /path/to/B_clone && cd /path/to/B_clone
git clone /path/to/bare_git
git submodule update --remote
и я мог видеть, что мой подмодуль не был включен.
Решение 1 : Если вы не заинтересованы в тестировании / изменении содержимого вашего подмодуля, но вам это нужно длясделайте ваши тесты, затем вы можете включить ссылку на внешний веб-сайт непосредственно в .git / config of (B) клона как:
[submodule]
url = http://submodule_external_website_url
, затем просто обновите свой подмодуль:
git submodule update --remote
Решение 2 : Если вы хотите изменить содержимое подмодуля в (A) и отправить его в (B), вам сначала нужно добавить репозиторий ssh в (B) в свой локальный (A)) Подмодуль репо как новый пульт:
cd /path/to/submodule
git add remote name_of_B_repo ssh://user@host/path/to/bare_git/
внесите в него изменения:
cd /path/to/main_A_local_repo
git submodule foreach git push name_of_B_repo branch_to_push
добавьте локальный путь подмодуля в .git / config fИло клона репо в (B) как:
[submodule]
url = /path/to/bare_git
и обновите свои модули как раньше:
git submodule update --remote