【问题标题】:Best way to remove commits from a release branch从发布分支中删除提交的最佳方法
【发布时间】:2021-05-28 12:55:34
【问题描述】:

到目前为止,我正在使用 Git 工作流。我看过很多关于它使用“理想幸福世界”解决方案的文档,但不是现实场景。

Git Workflows 非常简单:从 Develop 中创建一个发布分支并合并到 master。

但是如果您有 10 次提交,并且您希望仅发布 3 次随机提交(其他 7 次未通过测试或仍在测试中),会发生什么情况.据我所知,您有两个选择:

  1. 从开发中创建一个发布分支并还原 7 个不需要的提交
  2. 从 master 创建一个发布分支,然后从开发分支中挑选 3 个选定的提交。

我还没有看到任何足够好的解释。

我正在使用 1) 方法,但是当您必须还原许多提交时会变得很困难,而当没有要还原的提交时,方法 2) 会变得很困难。

我们使用它的方式: 当功能被批准并合并到开发中后,它被部署到 QA 环境中,只有成功测试的故事才会被移动到发布分支,发布分支被部署到生产,如果成功,它将被合并到 Master 中。

【问题讨论】:

    标签: git github version-control branching-and-merging branching-strategy


    【解决方案1】:

    您解释的两个解决方案应该有效。但他们是另一种简单的方法,使用 revert 命令对要删除的提交执行此操作。[revert 命令将创建一个新的提交,并撤消原始提交。]

    签出所需的分支

    git checkout "branchName"

    撤消所需的提交

    git revert "commit_id"

    使用撤消代码更新遥控器

    git push origin "branchName"

    然后你可以合并更新的拉取请求。

    【讨论】:

      【解决方案2】:

      如果你已经推送到远程服务器,那么使用git reset 不是一个好主意,因为其他用户现在可能在他们的本地存储库中有这个提交,并且可能正在进行编辑,然后他们将看不到提交的代码,他们在其中工作。 如果您使用git revert,其他用户将看到您提交的内容,也就是您想要删除的提交,您的评论应该解释原因。这对于从事同一项目的其他用户来说更清楚,干扰更少。

      【讨论】:

        【解决方案3】:

        @埃里克。您的第二种方法是常用的方法。另一种方法是通过挤压。

        压缩示例:显示 5 个补丁,其中我为我的发布分支选择了 2 个好的补丁。

        $git branch my_release_branch // 从开发分支创建发布分支。

        $git checkout my_release_branch // 签出发布分支。

        $git rebase -i HEAD~5 // Squash 5 从提示提交。

        进入后,您可以选择在此处保留或放弃提交。

        pick 9729c8db8fa my_good_patch1 // 选择好的。

        drop 8729c9db8fb my_bad_patch1 // 删除坏的。

        选择 7729c7db8fc my_good_patch2

        删除 6729c6db8fd my_bad_patch2

        删除 5729c5db8fe my_bad_patch3

        保存您的选择,然后让 git 压缩并更新发布分支。

        【讨论】:

          猜你喜欢
          • 2023-01-12
          • 2017-07-19
          • 2017-01-24
          • 2022-01-17
          • 2022-10-15
          • 2020-10-18
          • 2011-09-25
          • 2021-07-29
          • 1970-01-01
          相关资源
          最近更新 更多