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:如何防止特定的提交被合并到另一个分支中?的主要内容,如果未能解决你的问题,请参考以下文章