Я не думаю, что инструмент зеркалирования должен быть необходим, git кажется идеальным для этого.Как сказал fseto, я также рекомендую коммитить на A. Копирование ваших изменений в C должно быть сделано с помощью git push
.Тогда, что вам нужно понять, так это то, что, поскольку у B есть рабочее дерево, переход к нему - определенно не лучший путь.Вы можете (по крайней мере, должны) отправлять только в голые репозитории (репозиторий без рабочего дерева: что вы должны иметь на своем сервере C).
Вместо этого на B вы можетеполучить изменения от A (B является git clone
от A).Конечно, это можно настроить на cronjob.Это будет почти git pull
, за исключением того, что вы хотите всегда отражать HEAD
с сервера A, даже если вы переключаетесь между ветвями на A, удаляете коммиты, ветки и т. Д. Итак, на B я бы пошел наследующая команда:
git fetch origin ; git checkout origin/HEAD
Эта команда предупредит вас, потому что она создаст состояние 'detached HEAD', но это нормально, так как вы не хотите фиксировать на B.
Теперь наконец, серверная часть:
- Вкл. C: Создайте серверное репо с помощью
git init --bare
- Вкл. (или А?): добавьте свой сервер в качестве удаленного:
git remote add server <repo-C>
- Вкл. B (или A?): Если все работает хорошо, отправьте изменения на сервер, например:
git push server HEAD:master
.Я пишу HEAD для общего характера, но вы можете вместо этого использовать ветку.
Надеюсь, что мои объяснения понятны ...:)