我最近使用远程git服务器(我自己的计算机),服务器出现故障,无法远程访问。
我想知道是否有正确的方法来维护两个远程存储库,以便当第一个存储库失败时,我的另一台计算机上的第二个存储库可以自动使用?
我的第二个问题是如何自动(例如通过脚本)定期同步主要和备用远程存储库,以及如何更改哪一个是默认/主要depo?
我的日常用例很简单,如下:
git clone user@host:A.git
cd A
(modify code ..)
git add .
git commit -m "..."
git push
git pull ....
所以,没有分支,冲突不是我关心的问题。主要和备份回购应该只是在不同时间点的相同工作的快照。由于可访问性问题,其中一些可能会落后。
P.S。我不是在询问如何设置(裸)远程depo的基础知识,而是使用ssh进行常规推挽。我要问的是,当其中一个失败时,是否有办法在主仓库和备份仓库之间自动切换。
感谢。
---编辑---
澄清一下,我的问题归结为:
有没有办法设置两个远程存储库,如镜像RAID(磁盘阵列),其中
pull
请求来自最新的回购,push
请求会将更改推送到所有实时镜像。
如果其中一个回购邮件发生故障并再次返回,则会收到其他回购中累积的变化。
注意:有一个旧帖子here,会询问相关问题。但那里的答案没有解决同步问题,以及当多个repos变得不同步时会发生什么。
答案 0 :(得分:1)
您可以在任何地方维护第二个裸仓(例如USB磁盘),并立即在两个遥控器上自动推送。
请参阅" pull/push from multiple remote locations"。
那或者您可以设置一个执行备份的脚本,在Git中调用 bundle 。 我最近写了一个脚本:
您可以随时运行该脚本:如果没有创建新的提交,它将无法执行任何操作。
捆绑包背后的想法是将回购保存为一个文件(比在.git
树中保存大量文件更安全,并且更容易复制)。