如何使用压缩合并在主数据库上创建发行版

时间:2019-05-11 14:42:43

标签: git branching-and-merging branching-strategy

我们使用master / staging / feature分支策略。 master和staging的寿命很长,并且功能分支仅在与staging合并之前存在。

将分段合并到master中时,我们的jenkins服务器会压缩提交内容,以在master中创建一个带有版本标记的“发布”提交。

不幸的是,缺少一些更改,即在功能分支中删除的文件仍然存在于master中。

我们希望分段具有整个提交历史记录,而master希望仅具有一个用发行版号标记的提交。

我知道问题在于挤压提交和缺乏共享历史记录,我的问题是如何自动分阶段拥有完整的历史记录,从而实现对master的单次提交(这必须在jenkins服务器上进行。

我已经看过rebase,但是我不知道它是否可以自动完成我们想要的操作(这必须在无需人工干预的jenkins服务器上进行)。

1 个答案:

答案 0 :(得分:0)

您可以使用reset --soft来实现这一点,以使分支“相同”。因此,您在master上进行了最后一次发行(此时暂存和master是“相同的”)。然后在功能分支上发生1000次提交,并合并到暂存。此时,您想再次在master上发布:

git checkout --detach staging
git reset --soft master # here is where the magic happens... all changes between master and staging are placed on index, branch pointer is set to master
git commit -m "New release" # if you want to have a more detailed comment, find the way to do it.
git branch -f master # move master pointer to new revision
git tag blahblah # tag revision or take it from here and do whatever you need

不涉及合并。到该过程结束时,分支将相同