Git:如何防止特定的提交被合并到另一个分支中?

Posted

技术标签:

【中文标题】Git:如何防止特定的提交被合并到另一个分支中?【英文标题】:Git: How can I prevent a specific commit from being merged into another branch? 【发布时间】:2016-07-26 00:32:34 【问题描述】:

我们公司的 Git 工作流程如下:我们有一个 master 分支,一些 feature/* 分支用于开发新功能,这些分支在工作完成后合并回 master,还有 release/* 分支。这些分支是在产品发布之前创建的,旨在修复错误,没有新功能,然后这些错误修复偶尔会合并回master 分支。

有时,release/* 分支中的特定提交是我们想要合并回master 的更改:例如,当发布号递增。由于分支中还有其他重要的修复,因此肯定有人迟早会将该本地提交合并到master中,从而破坏主分支中的某些内容。 p>

我所知道的当前“解决方案”是在本地提交完成后立即将release/* 分支合并到master还原本地提交然后推送。它有点工作,但历史并不干净。此外,这不会阻止本地提交合并到除master 之外的另一个分支。

在所描述的工作流程中是否有更好的方法来解决该问题?

【问题讨论】:

【参考方案1】:

据我所知,如果不合并其所有父提交,就不可能在提交中合并,这听起来像是您正在尝试做的事情。

不过,对您的工作流程稍作改动即可解决此问题。

类似于Git Flow 模型,您可以创建hotfix/* 分支来修复错误,而不是直接提交到release 分支。这个分支可能应该基于master(在作为任何相关release 分支的父级的第一个提交),并且它应该合并到master 以及它影响的任何release 分支中。

这样,release 分支永远不需要合并到 master,并且可以保留用于特定于版本的修复。

【讨论】:

【参考方案2】:

为什么不将release/* 分支上的错误修复隔离为单独的提交(即没有发布版本更新),然后将这些提交挑选到master,正如here 所描述的那样?

【讨论】:

以上是关于Git:如何防止特定的提交被合并到另一个分支中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将多个提交合并到另一个分支上作为单个压缩提交?

git把一个分支上的某个提交合并到另一个分支

IDEA中Git分支未push的变更集如何合并到另一个分支

git 合并某分支某次commit到另一个分支

Git合并指定文件到另一个分支

Git合并指定文件到另一个分支