Я знаю, что это не ответ на главный вопрос, который вы задали, но он будет намного, намного проще, если вам не придется сталкиваться с интеграцией двух возможно конфликтующих центральных репозиториев - конечно, вы можете придумать с настройкой их автоматической синхронизации, но в какой-то момент конфликты должны быть разрешены человеком.
Если пользователи с сайта B могут подключиться по ssh к сайту A, они должны иметь возможность извлекать / извлекать напрямую из репозитория на узле A - push / pull через ssh является одним из основных способов работы с удаленными устройствами в git. Посмотрите на справочную страницу - вы увидите ssh URL в списке.
Итак, на сайте B вы просто добавили бы пульт:
git remote add siteA ssh://user@site.A/path/to/repo.git
Если у вас действительно плохие ограничения пропускной способности, и вам нужно очень часто использовать push / pull, я полагаю, это действительно может быть проблемой производительности? У меня никогда не было с этим никаких проблем.
Теоретически вы можете задать два центральных репо-хука после обновления, которые сразу же подталкивают к другому центральному репо. Это будет работать до тех пор, пока не произойдет толчок в обоих направлениях одновременно (может быть, это маловероятно?) - тогда вам потребуется настоящее слияние, требующее хранилища не-голых данных и, возможно, человеческого интегратора для решения конфликтов. Но пока нет одновременной подачи, репо всегда будут в одном и том же месте, и вам не придется беспокоиться о конфликтах. Если B обновляется, A также обновляется, и пользователь, пытающийся вставить что-то конфликтующее в A, будет вынужден разрешить это самостоятельно.