如果我正确地读你的问题中,Server B
和Server C
的唯一目的就是备份Server A
,对不对?
在这种情况下,你不必从A
告诉Server B
和Server C
到pull
,而不是从A
推到B
和C
。所以,你的后收到钩的内容将是
git push --mirror server_b
git push --mirror server_c
假设server_b
和server_c
已知的A
遥控器。有关--mirror
标志的说明,请参阅git push
的文档。
如果要使B
和C
成为活动部件,请定期将一个cron作业设置为git fetch A
。
另一种方法是在具有三个URL当地的回购协议定义远程:
[remote "multi"]
url = server_a/repo.git
url = server_b/repo.git
url = server_c/repo.git
现在,当你通常使用git push
把你的工作A
,简单地做一个
git push --mirror multi
同时推送您所有的本地A
,B
和C
。
另一个问题是:你为什么推到B
和C
呢?这似乎只是为了备份的原因。你知道每个回购(你的工作副本,A
,...)都包含你的发展的完整历史吗?这不像SVN,你有一个中心历史。 Git是DVCS,每个工作副本都有完整的历史记录。
所以,如果使用Git,你的历史将只会丢失,如果所有回购被同时销毁。否则,您将始终至少有一个包含项目历史记录的回购。有关这方面的一些说明,请参见Pro Git的介绍一章。
嗨eckes,你建议是太棒了!这是我正在寻找的。非常感谢,非常感谢。关于你的问题“另一个问题是:你为什么推B和C?”我正在使用云服务器和负载平衡器。服务器A,B和C服务器具有相同的网站内容。 – Finau