Git在两个存储库中同步称为“生产”的两个分支

时间:2019-12-12 23:04:24

标签: git

我也看到过类似的问题,但是没有一个问题使我有信心改变我的git。我不是一个完全的菜鸟,但是从来不需要处理两个存储库,所以我想知道正确的实现方法。

我正在一个项目中,我们有一个用于阶段的仓库(SRV-S)和另一个用于生产的仓库(SRV-P)。两者都有“生产”分支,如果通过詹金斯魔术推入该分支,它们就会生效。

我不是git wiz,所以我为每个存储库维护单独的项目文件夹。我在SRV-S(临时仓库,生产分支)上进行了更改,一旦获得批准,就将这些文件手动复制到我的SRV-P文件夹(生产仓库,生产分支)中。然后我进入SRVF-P并git添加,提交,推送。乏味。

在临时存储库中,是否有一种简单的方法可以在名为“生产”的分支上进行操作,然后从另一个存储库中拉出一个名为“生产”的分支,然后推送至任一存储库。也就是说,“生产”分支将存在于两个具有相同历史记录的存储库中。

2 个答案:

答案 0 :(得分:1)

我认为您的主要问题是回购协议没有真正绑定,是吗?例如,您有两个单独的存储库,两个具有相同名称的分支...但是它们总是并行运行,没有共同的祖先。在这种情况下,您仍然可以在一个可以使用的本地回购协议中进行游戏,并且在其上设置了两个遥控器(srv-p,srv-s)。现在...。我想您将主要针对srv-s做事...然后在某个时候您决定要在srv-s / production中拥有什么在srv-p / production上(在内容方面,而不是历史上)。

最省力又无需手动移动东西的方法是:

git checkout srv-s/production
# you would be on detached HEAD

# next step is where the magic happens:
# - move branch "pointer" to srv-p/production
# - keep our content as is, all differences between our working tree
#   and srv-p/production will be on index, ready to be committed
git reset --soft srv-p/production

# now we create a new revision so that the two branches have
# exactly the same content
git commit -m "A new version in srv-p/production"

# now we push into srv-p/production cause right now we are still
# on detached HEAD
# we actually haven't moved any branch either locally
# or on any of the two remotes
git push srv-p HEAD:production # send current HEAD to srv-p/production

我这样做是在没有任何本地分支机构的情况下进行的,您也可以使流程与本地分支机构保持一致。

答案 1 :(得分:1)

核心问题是您的版本控制策略不好。您不应该不要维护两个存储库。

将存储库合并为一个,并为生产和暂存维护一个单独的分支。然后在两个分支之间合并。