合并hotfix到develop分支时出现多提交的Git问题咨询
Git热修复流程相关问题解答
当前Git结构

背景说明
- 从
develop分支创建ticket分支并完成修改,发布后将该ticket分支合并到main和develop分支 - 从
main分支创建新的hotfix分支,完成修改后成功合并回main分支,但合并到develop分支时,出现一个包含两个commit ID的提交,分别对应hotfix的变更和上次发布提交的变更
问题解答
1. 采用的热修复交付流程是否正确?
大体方向是正确的,但存在细节优化空间:从main拉取hotfix分支、修复后合并回main的操作符合热修复核心逻辑,但合并到develop时出现双提交,说明develop与main分支的提交历史已出现分叉,这大概率是之前合并ticket分支到两个分支时,未保持提交历史一致性(比如一个用快进合并,另一个用非快进合并)导致的。
2. 是否有标准的Git热修复交付方法?
目前广泛使用的是Git Flow规范中的热修复流程:
- 从当前生产分支(一般为
main/master)创建命名为hotfix/*的分支 - 在
hotfix分支上完成修复并提交变更 - 将
hotfix分支合并回main分支,同时打一个新的版本标签用于生产发布 - 将
hotfix分支合并回develop分支,确保后续开发分支包含该修复 - 完成上述操作后删除
hotfix分支
如果合并hotfix到develop时出现冲突,需手动解决冲突后完成合并;若develop分支已包含hotfix的相关变更,也可以用git cherry-pick命令单独提取hotfix的提交到develop分支。
3. 合并hotfix到develop分支时出现双提交是否属于正常情况?
这种情况不属于正常预期。它的本质是develop与main分支的提交历史出现分叉,Git无法进行快进合并,只能创建一个新的合并提交,该提交会包含两个父提交(分别来自develop当前头节点和hotfix的头节点)。之所以会关联上次发布提交的变更,是因为之前合并ticket分支到两个分支时,未保证提交历史同步,导致main上的发布提交在develop的历史中位置不一致或不存在。
内容的提问来源于stack exchange,提问作者Nikhil Rane
相关产品推荐
相关产品推荐

