1

设置

我有 4 台机器(Dev1Dev2ServerLaptop)的本地网络。

服务器有你可能称之为主存储库的东西。

2 台开发机器是进行开发的地方。

dev..commit...dev..commit...dev..commit...dev..commit...dev..commit.

...然后最终...

push to **Server**.

到目前为止一切都很好。这个循环效果很好。


备份策略

笔记本电脑具有其他机器使用的相同存储库的克隆。此克隆具有从ServerDev1Dev2到 repo 的遥控器。

在笔记本电脑上运行的计划任务每​​天下午 3 点左右从所有其他存储库中获取所有提交。

因为备份操作是获取,Laptop设法维护每个人的存储库所在的列表,而不允许他们的各个负责人相互影响。

我认为这是一个很好的异地备份,因为机器每天都和我一起离开。


我想达到什么

我想把这个责任从我的笔记本电脑转移到另一个可能基于云的服务器上。云1

但是Cloud1将无法找到Dev1Dev2或位于我们防火墙后面的任何其他机器。

因此,我认为是否可以找到一种方法来安排从每台 Dev 机器到Cloud1的推送(对于含糊不清的术语感到抱歉)是合理的。

然而现在我们到达了问题的症结所在。

问题

Push 不是 fetch 的反面。

如果我的每台开发机器都尝试推送到Cloud1,那么它们的每个主分支(至少)都将尝试更新云机器的主指针。

当您想与他人分享您一直在做的工作时,推送是很好的选择。

我需要一个命令,它可以很好地在远程机器上备份您的所有提交和磁头,而不会影响该机器自己的磁头。

我不相信这是目前可能的。我正在研究其他方法。这个问题纯粹与 git 在没有合并的情况下推送的能力有关。(不完全准确,但读到这里你明白我的意思 - 我希望)

4

1 回答 1

0

您可以明确指定要更新的 refspec。所以,如果Dev1

git push cloud +refs/heads/master:refs/remotes/dev1/master

Dev2确实如此

git push cloud +refs/heads/master:refs/remotes/dev2/master

他们不会发生冲突。

请注意,如果您不想在命令行上全部指定,您可以为每个开发人员配置不同的推送 refspec,但我认为无论如何都会编写脚本。

于 2013-02-01T12:19:34.830 回答