有选择地删除 git 提交的正确方法吗?

Is there a proper way to remove git commits selectively?

假设我有一个 MASTERDEV 分支,一个是代码的 stable/released 版本(master),另一个是不稳定的(dev)未完成的工作.

我开始编写一个从 DEV 分支出来的测试套件,现在应该将其包含(或 "released")到 master 中。

问题是有一段时间分支一直在更新DEV,现在有来自其他分支的合并提交不应该合并到MASTER。

提交已正确标记,我们确切地知道它们是什么。

要包含在发布中的新代码是测试套件的一部分,因此它不会更改源代码,因此回滚所有不需要的 changes/commits 应该不是什么大问题源代码。

问题是:

是否有预定义的方法来执行此操作?如果有的话,在哪里概述了这种方法?

我可以研究一下 git 以找到 "my way" 来安全地执行此操作,但这听起来像是在任何标准开发过程中都可能发生的事情的经典案例,并且在我的经验通常已经有一个预定义的方法,由前(和英雄)开发人员在寻求可靠的开发方法时概述。

如果没有可用或已知的方法,我们将不胜感激。

您可以修改分支的历史记录吗?如果是这样,我可能会推荐 interactive rebase 您的分店。

git rebase -i <commit_hash>

提交哈希是您在分支上进行的第一次提交。您可以选择您关心的提交并跳过您不想要的提交(如果您不想要提交,只需删除该行)。在交互式 rebase 之后,您将拥有一个仅包含要合并到 master 中的提交的分支。

并且在将来,请注意在您的分支中包含您不想与您的分支一起发布的代码,这样您就可以避免做这些额外的工作。