【问题标题】:Is there a proper way to remove git commits selectively?有选择地删除 git 提交的正确方法吗?
【发布时间】:2016-08-31 02:44:53
【问题描述】:

假设我有一个 MASTERDEV 分支,一个是代码的稳定/发布版本(主),另一个是不稳定(开发),正在进行未完成的工作。

我开始编写一个从 DEV 分支的测试套件,现在应该包含(或“发布”)到 master 中。

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

提交已正确标记,我们可以确定它们具体是什么。

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

问题是:

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

我可以在 git 上进行一些研究以找到“我的方式”来安全地执行此操作,但这听起来像是在任何标准开发过程中都可能发生的事情的经典案例,而且根据我的经验,通常已经有前(和英勇的)开发人员在寻求可靠的开发方法时概述的预定义方法。

如果没有可用或已知的方法,任何建议都将不胜感激。

【问题讨论】:

  • 更多细节和更好的问题陈述会更容易回答。鉴于问题现在的框架方式,很难理解您需要什么帮助
  • 你不明白哪一部分?如果您可以更具体一些,我可以扩展细节,或者提供一些示例。无论如何,我现在知道我要求重新设置基准以及如何重新设置基准。

标签: git git-branch branching-and-merging git-commit


【解决方案1】:

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

git rebase -i <commit_hash>

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

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

【讨论】:

    猜你喜欢
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 2011-09-03
    相关资源
    最近更新 更多