如何在 GIT 中执行反向提取



设置

我有一个由 4 台机器(Dev1Dev2服务器笔记本电脑)组成的本地网络。

服务器具有您可能称之为主存储库的内容。

2 台开发计算机是开发发生的地方。

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

。然后最终...

push to **Server**.

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


备份策略

笔记本电脑具有其他计算机使用的相同存储库的克隆。此克隆具有从服务器Dev1Dev2 到存储库的远程。

笔记本电脑上运行的计划任务每天在 ~3pm 从所有其他存储库获取所有提交。

由于备份操作是获取,因此Laptop设法维护每个存储库所在的列表,而不允许其各种头脑相互影响。

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


我想要实现什么

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

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

所以我认为看看我是否可以找到一种方法来安排从每台开发机器到 Cloud1 的推送(抱歉术语含糊不清)是合理的。

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

问题所在

推送不是获取的对立面。

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

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

我需要一个命令,它适用于在远程机器上备份所有提交和磁头,而不会影响该机器自己的磁头。

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

您可以显式指定要更新的引用规范。所以,如果 Dev1 确实如此

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

Dev2 确实如此

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

他们不会发生冲突。

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

相关内容

  • 没有找到相关文章

最新更新