问题描述
到目前为止,我使用的是 Git 工作流。我已经使用“理想的快乐世界”解决方案看到了很多关于它的文档,但不是现实的场景。
Git 工作流非常简单:从 Develop 创建一个发布分支并合并到 master。
但是如果你有,假设在开发中有 10 个提交,并且你只想发布 3 个随机提交(其他 7 个没有通过测试或仍在测试中)会发生什么? .据我所知,您有 2 个选择:
对此我还没有看到任何足够好的解释。
我使用的是 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 压缩并更新发布分支。