Если я правильно прочитал ваш вопрос, единственная цель Server B
и Server C
- сделать резервную копию Server A
, верно?
В этом случае вам не нужно указывать Server B
и Server C
до pull
от A
, вместо этого нажмите от A
до B
и C
.Таким образом, содержимое вашей ловушки после получения будет
git push --mirror server_b
git push --mirror server_c
при условии, что server_b
и server_c
являются известными удаленными устройствами на A
.См. Документы git push
для описания флага --mirror
.
Если вы хотите, чтобы B
и C
стали активной частью, настройте задание cronна git fetch A
периодически.
Другой подход заключается в определении удаленного в локальном репо с тремя URL-адресами:
[remote "multi"]
url = server_a/repo.git
url = server_b/repo.git
url = server_c/repo.git
Теперь, когда вы обычно переводите свою работу на A
используя git push
, просто сделайте
git push --mirror multi
, чтобы подтолкнуть всех ваших местных на A
, B
и C
одновременно.
Другой вопрос: почему вы вообще нажимаете на B
и C
?Похоже, что вы делаете это только по причинам резервного копирования.Знаете ли вы, что каждое репо (ваша рабочая копия, эта на A
, ...) содержит полную историю вашего развития?Это не похоже на SVN, где у вас есть одна центральная история.Git - это DVCS, и каждая рабочая копия имеет полную историю.
Так что, используя Git, ваша история будет потеряна, только если все репо будут уничтожены одновременно.В противном случае у вас всегда будет хотя бы один репо, содержащий историю вашего проекта.См. Также вводную главу по Pro Git для некоторых заметок об этом.