从发布分支中删除提交的最佳方法

问题描述

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

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

但是如果你有,假设在开发中有 10 个提交,并且你只想发布 3 个随机提交(其他 7 个没有通过测试或仍在测试中)会发生什么? .据我所知,您有 2 个选择:

  1. 从 develop 创建一个发布分支并恢复 7 个不需要的提交
  2. 从 master 创建一个发布分支,并从 develop 分支中挑选出 3 个选定的提交。

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

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

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

解决方法

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

签出所需的分支

git checkout "branchName"

撤消所需的提交

git revert "commit_id"

使用撤销代码更新遥控器

git push origin "branchName"

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

,

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

,

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

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

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

$git checkout my_release_branch // 结帐以发布分支。

$git rebase -i HEAD~5 // 从提示压缩 5 次提交。

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

pick 9729c8db8fa my_good_patch1 // 选择好的。

drop 8729c9db8fb my_bad_patch1 // 删除坏的。

选择 7729c7db8fc my_good_patch2

丢弃 6729c6db8fd my_bad_patch2

丢弃 5729c5db8fe my_bad_patch3

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...