繁体   English   中英

GitFlow:安全地将开发更改合并到功能分支

[英]GitFlow: safely merge develop changes to a feature branch

最近我开始研究一个很棒的功能,所以我创建了一个新feature/xyz分支。 问题是这个功能很大,所以我需要3个月才能完成它。 我想安全地合并已经取得进展develop到我的特性分支,而无需担心从变化develop的分支将覆盖我已经在我的特性分支进行的更新。 我之前尝试将develop合并到feature/xyz尝试最终导致了我在已恢复的新功能中所做的一些更改。

实现这一目标的命令是什么? 谢谢

唯一的安全性在于学习,辨别和频繁合并。

只有你了解develop代码和feature/xyz对齐,没有其他人。 只有你才能以敏锐的方式正确地合并这两个流程。 即使使用默认的合并策略,这些策略远不如-S ours-X theirs危险,你仍然需要检查结果。

当然,你可能需要一些帮助,git会提供一些帮助。 例如,您可以使用git记录的分辨率 - rerere来帮助您在最初创建一个之后做出相同的正确合并决策。

一个相当普遍且相对简单的模型,使用您为分支提供的名称,可能对您有用,

  • develop是发展主要develop的分支
  • xyz是您开发xyz特征的分支
  • xyz_stage是您合并developxyz代码的分支,保持该分支稳定与developxyz各自的稳定点一致。 当您准备发布功能xyz或其中的一部分时,这也是您最终合并回开发的分支。

以上假设你不仅合并xyzxyz_stage ,但你也合并developxyz_stage不时和确保的部分xyz发布至今,以xyz_stage工作,并与从代码通过相关测试,结合develop

尽管如此,您仍然需要选择如何创建xyz分支,在该功能上工作,了解开发进度。

最干净的选择是 - 不要让它意识到。 这就是为什么你有两个开发流程汇集在一起​​的xyz_stage 只要xyz的开发没有延长,这种方法是可行和合理的。

第二个选项是当您对暂存分支感到满意时将xyz_stage合并回xyz 这样你就可以获得稳定的观点,你可以继续并在顶部开发xyz功能。

以下是该过程的简单说明,并附有注释:

功能xyz

使用git merge -s recursive -X ours 这将导致两个分支中的冲突始终使用签出目录中的版本进行解析(在本例中为feature/xyz )。

重要提示 :与您的标题相反, 此策略不一定是“安全的” :来自develop的修改可能与feature/xyz的修改相冲突。 与往常一样,请确保正确测试合并的更改。

根据我的经验,唯一的“安全”解决方案是始终手动检查和测试任何合并的结果。 --no-commit将进行合并,让你在提交之前检查它,或者你可以重置/修改,无论什么感觉更实用。 获得三向合并工具非常有用。 在没有合并冲突的情况下,有太多方法可以破解,依靠自动合并必然会让你陷入困境。 如果你有100%的测试覆盖率,当然,你可以更轻松一点,但有多少项目可以真正声称? ;-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM