我有两个存储库 url,我想同步它们,使它们都包含相同的东西。在 Mercurial 中,我想做的是:
hg pull {repo1}
hg pull {repo2}
hg push -f {repo1}
hg push -f {repo2}
这将导致两个存储库中都有两个头(我知道有两个头并不常见,但我这样做是为了同步,它需要是非交互式的。头将从一个存储库中手动合并,然后同步再次运行)。
我想在 Git 中做同样的事情。例如,在没有用户交互的情况下,将所有更改都放入两个存储库中,并带有多个分支/头/以后要合并的任何内容。我正在尝试在命令中使用 url 来执行此操作,而不是添加遥控器(?),因为可能涉及许多存储库,并且为它们设置别名只会使我的脚本更加复杂。
我目前正在使用克隆存储库,git clone --bar {repo1}
但是我正在努力“更新”它。我已经尝试过get fetch {repo1}
,但这似乎并没有降低我的更改;git log
仍然没有显示 repo1 中添加的变更集。
我也尝试--mirror
在我的push
and中使用clone
,但这似乎是来自本地不存在的 repo2 的远程变更集,而我需要保留来自两个 repos 的更改:/
最好的方法是什么?
编辑:为了让我更清楚我想要做什么......
我有两个存储库(例如 BitBucket 和 GitHub),并且希望人们能够推送到其中一个(最终,一个是 Git,一个是 Mercurial,但我们现在假设它们都是 Git 以简化事情)。我需要能够运行一个脚本,该脚本将“同步”两个存储库,它们都包含两组更改,并且可能需要稍后手动合并。
最终,这意味着我可以只与其中一个存储库(例如 Mercurial 存储库)进行交互,并且我的脚本将定期拉入我可以合并的 Git 更改,然后它们将被推回。
在 Mercurial 中,这是微不足道的!我只是从两个存储库中提取,然后推动-f/--force
以允许推动多个头。然后任何人都可以克隆其中一个存储库,合并头部,然后推回。我想知道如何在 Git 中做最接近的类似事情。它必须是 100% 非交互式的,并且必须将两个存储库保持在可以无限重复该过程的状态(这意味着不重写历史记录/更改变更集等)。