[英]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
是您合并develop
和xyz
代码的分支,保持该分支稳定与develop
和xyz
各自的稳定点一致。 当您准备发布功能xyz或其中的一部分时,这也是您最终合并回开发的分支。 以上假设你不仅合并xyz
到xyz_stage
,但你也合并develop
成xyz_stage
不时和确保的部分xyz
发布至今,以xyz_stage
工作,并与从代码通过相关测试,结合develop
。
尽管如此,您仍然需要选择如何创建xyz
分支,在该功能上工作,了解开发进度。
最干净的选择是 - 不要让它意识到。 这就是为什么你有两个开发流程汇集在一起的xyz_stage
。 只要xyz
的开发没有延长,这种方法是可行和合理的。
第二个选项是当您对暂存分支感到满意时将xyz_stage
合并回xyz
。 这样你就可以获得稳定的观点,你可以继续并在顶部开发xyz
功能。
以下是该过程的简单说明,并附有注释:
使用git merge -s recursive -X ours
。 这将导致两个分支中的冲突始终使用签出目录中的版本进行解析(在本例中为feature/xyz
)。
重要提示 :与您的标题相反, 此策略不一定是“安全的” :来自develop
的修改可能与feature/xyz
的修改相冲突。 与往常一样,请确保正确测试合并的更改。
根据我的经验,唯一的“安全”解决方案是始终手动检查和测试任何合并的结果。 --no-commit将进行合并,让你在提交之前检查它,或者你可以重置/修改,无论什么感觉更实用。 获得三向合并工具非常有用。 在没有合并冲突的情况下,有太多方法可以破解,依靠自动合并必然会让你陷入困境。 如果你有100%的测试覆盖率,当然,你可以更轻松一点,但有多少项目可以真正声称? ;-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.