【问题标题】:Synchronize two remote git repositories automatically自动同步两个远程 git 存储库
【发布时间】:2014-09-12 22:39:38
【问题描述】:

作为临时解决方案,我想自动同步两个远程 git 存储库。只是为了有可能一步步迁移。两个存储库都将用于推送和获取。是否可以让两个存储库始终处于相同状态?我考虑了两个存储库上的服务器端挂钩,它将立即将更改推送到另一台服务器。任何提示如何实现这一点?

【问题讨论】:

    标签: git shell githooks synchronize


    【解决方案1】:

    使用 git 无法实现真正​​的读/写多主机操作。如果一个客户端将提交推送到第一台服务器上的分支,而另一个客户端将不同的提交推送到第二台服务器上的同一分支,那么谁来决定哪个提交获胜?

    你可能会说它应该合并,但是如果一个提交只有一行x=1,另一行x=2怎么办?这个决定只能由人来做。

    如果您可以接受只有一个存储库可以读/写而其他存储库是只读的,那么这很容易做到。

    【讨论】:

    • 也许可以在推送之前锁定两台服务器上的分支? 1)推送到第一台服务器,2)在两台服务器上锁定分支,3)如果成功允许推送到第一台服务器,4)与第二台服务器同步,5)释放一切。否则拒绝推送到第一台服务器。不确定在 git 中是否有可能。
    • 除 push 和 fetch 之外的所有 git 操作始终是本地的,这就是它快速的原因。您的解决方案需要始终询问镜像中的第二个合作伙伴是否可以继续进行几乎所有操作。这将使 git 依赖于网络延迟,更糟糕的是,第二台服务器始终在线。如果服务器之间的网络连接暂时丢失怎么办?两者都应该拒绝任何操作吗?
    • 所以想法仍然是在本地进行更改(没有任何询问/同步等)。如果必须询问第二个合作伙伴,则推送和获取仍然只有两个例外。断开的网络连接应该是一个例外,在这种情况下,必须有人手动修复这个问题。正如我所说,这只是一个临时解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 2011-06-19
    • 2020-12-06
    • 1970-01-01
    • 2013-03-07
    • 2014-08-18
    • 2014-10-19
    相关资源
    最近更新 更多