在 git 中,如何验证错误修复同时存在于 Release 分支和 master 中

In git, how do I verify that bug fixes are in both the Release branch and in master

我们为最新版本创建了一个发布分支。与此同时,我们还在继续开发 master 的新功能。

我们不断在发布分支上修复错误。通常我们在release分支的基础上创建一个topic分支,修复topic分支上的bug,完成后合并到release分支。

在此之后,我们从发布分支中挑选合并提交到 master。

现在开始讨论这个问题:我们修复了很多错误,并且开始变得很难确保它们都是精心挑选的。有没有办法验证发布分支上的所有修复也包含在 master 中?

如果您从一个分支中挑选一个补丁到另一个分支,它将获得不同的提交哈希值,因此您不能依赖它。

我建议在提交消息的开头使用您自己的密钥(例如,“Bug-12345 修复 SomeComponent 中的内存泄漏”)。然后,您可以从每个分支中提取错误修复列表,例如:

$ git log --oneline <branchname> | grep '^Bug-' | sort

然后比较两者。

经过进一步调查,我在一个我不知道存在的 git 命令中找到了问题的答案。

git cherry 完成任务。 The docs 说:“等效性测试基于差异,在删除空格和行号之后。”这可能非常有用。

要检查 master 中是否存在与发布分支相同的提交,您可以运行以下命令:

$ git cherry master <your_release_branch>