Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自动同步两个远程git存储库_Git_Shell_Githooks_Synchronize - Fatal编程技术网

自动同步两个远程git存储库

自动同步两个远程git存储库,git,shell,githooks,synchronize,Git,Shell,Githooks,Synchronize,作为一个临时解决方案,我想自动同步两个远程git存储库。只是为了有可能一步一步地迁移。这两个存储库都将用于推送和获取。是否可能使两个回购协议始终处于同一状态?我考虑了两个存储库上的服务器端钩子,它们会将更改立即推送到另一台服务器上。任何关于如何实现这一点的提示?真正的读/写多主机操作在git中是不可能的。如果一个客户端将提交推送到第一台服务器上的分支,而另一个客户端将不同的提交推送到第二台服务器上的同一个分支,那么谁来决定哪一个提交获胜 您可能会说它应该合并,但如果一个提交只有一行x=1,另一行

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

真正的读/写多主机操作在git中是不可能的。如果一个客户端将提交推送到第一台服务器上的分支,而另一个客户端将不同的提交推送到第二台服务器上的同一个分支,那么谁来决定哪一个提交获胜

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


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

在推送之前,是否可以在两台服务器上锁定分支?1) 推送到第一台服务器,2)锁定两台服务器上的分支,3)如果成功允许推送到第一台服务器,4)与第二台服务器同步,5)释放所有内容。否则拒绝推送到第一台服务器。不确定这样的操作在git中是否可行。除了push和fetch之外,所有git操作都是本地的,这就是为什么它很快的原因。您的解决方案需要始终询问镜像中的第二个合作伙伴是否可以继续几乎任何操作。这将使git依赖于网络延迟,更糟糕的是,第二台服务器始终在线。如果服务器之间的网络连接暂时丢失怎么办?两者是否都应该拒绝任何操作?因此,想法仍然是在本地进行更改(无需任何询问/同步等)。如果必须询问第二个合作伙伴,则仍然只有两个例外:推送和获取。断开的网络连接应该是例外,在这种情况下,必须有人手动修复。正如我所说,这只是一个暂时的解决办法。