[英]Git workflow - Reverting a feature branch from release branch
我正在尝试了解创建git-workflow的问题
我们正在考虑使用功能分支一次开发多个功能,所以我们说:
- F1 (Feature 1)
- F2 (Feature 2)
- F3 (Feature 3)
我们刚刚完成了功能1和3,并将它们合并到我们的开发分支中进行集成测试:
-F1---Commit1---Commit2----------------------------------
-F2--------Commit1---------------------------------------
-F3--------------------------Commit1---------------------
-Development-------Merge-F1------------Merge-F2----------
开发部门正处于前沿,并作为夜间构建的一部分被释放。 当我们对此感到满意时,此分支将合并到一个临时分支中,然后用于客户端审核:
-F1---Commit1---Commit2---------------------------------------------
-F2--------Commit1--------------------------------------------------
-F3-------------------------Commit1-----Commit2---------------------
-Development-------Merge-F1------------Merge-F2---------------------
-Staging-------------------------------------------Merge-Development
客户在测试环境中查看此版本,但对F1不满意。 在此期间,F3代码已完成,客户希望查看。
问:如何使用git进入我们的暂存分支只有F2和F3进行审核的位置,而不是客户现在拒绝的F1?
你基本上有两个选择:
在Development
恢复F1
合并,然后将其合并到Staging
。
F1
将从Development
和Staging
演出中消失。
在合并F1
之前Staging
到提交,并手动合并F2
和F3
。
最终, Staging
不会成为Development
的子集。
F1
将从Staging
消失。
一个非常流行的工作流程是git-flow 。 这基本上是一个非常灵活的模型。 这并不意味着你必须完全按照那里的描述去做,但你可以从中获取灵感。
在这种情况下,一个好的解决方案是创建一个审查特定的临时分支,用于向客户展示。
此分支可以直接基于开发,也可以基于合并的特定功能的分段。
在客户端审核之后,您可以在暂存分支或特定版本分支中合并接受的功能,并且可以删除临时审阅分支。
这样,您就不必为长寿分支重写历史记录。
您可以使用git revert
命令恢复合并提交。
您必须指定要还原的合并提交以及要保留的父谱系。
Development $ git revert -m 1 <Merge-F1 SHA>
警告。 还原合并提交声明您永远不会希望合并带来的树更改。 因此,以后的合并只会带来由不是先前还原的合并的祖先的提交引入的树更改。 这可能是也可能不是你想要的。 (见git revert
)
评论警告。 如果你想重新引入F1,你将不得不重新定义F1提交,这样就可以合并它们。
我们的项目流程非常相似。 我们的工作方式是我们有两个环境来演示我们的客户:
我们首先从开发分支部署到开发 环境 。 客户在此环境中单独测试功能。
然后,我们仅将暂存分支合并到客户满意的功能中。
最后,我们将最终的预发布版本部署到测试环境中以供最终审核。
在这种情况下,我们永远不必删除功能,但可能需要小修复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.