我也看到过类似的问题,但是没有一个问题使我有信心改变我的git。我不是一个完全的菜鸟,但是从来不需要处理两个存储库,所以我想知道正确的实现方法。
我正在一个项目中,我们有一个用于阶段的仓库(SRV-S
)和另一个用于生产的仓库(SRV-P
)。两者都有“生产”分支,如果通过詹金斯魔术推入该分支,它们就会生效。
我不是git wiz,所以我为每个存储库维护单独的项目文件夹。我在SRV-S
(临时仓库,生产分支)上进行了更改,一旦获得批准,就将这些文件手动复制到我的SRV-P
文件夹(生产仓库,生产分支)中。然后我进入SRVF-P
并git添加,提交,推送。乏味。
在临时存储库中,是否有一种简单的方法可以在名为“生产”的分支上进行操作,然后从另一个存储库中拉出一个名为“生产”的分支,然后推送至任一存储库。也就是说,“生产”分支将存在于两个具有相同历史记录的存储库中。
答案 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)
核心问题是您的版本控制策略不好。您不应该不要维护两个存储库。
将存储库合并为一个,并为生产和暂存维护一个单独的分支。然后在两个分支之间合并。