[英]Git rebase feature branch messes up commits in pull request to develop/master branch
我有以下场景:
开发人员完成工作后,他会在开发分支上创建拉取请求。 批准后,我们将功能分支压缩合并到开发分支,以便不包括开发人员在功能分支上所做的所有提交。 这使我们能够在开发分支上拥有清晰干净的 git 历史记录。
有时功能分支需要从 develop 分支进行 rebase,这就是问题开始的地方。
如何避免这种情况,以便 PR 仅包含来自功能分支的实际提交?
我怀疑这是在修补程序发布后从 master 重新开发基础之后发生的。
考虑以下场景:
master A->B->C
\
develop D
\
feature A E
然后,您会在master
、 F 中获得一个修补程序,并对其进行 rebase develop
。 变基创建了一个具有不同散列的“新”提交 (D'),因此从 git 的角度来看,D 和 D' 是两个独立且不相关的提交。 D 仍然存在,并且 C 是它的父级,但它不再处于develop
- 仅在feature A
:
master A->B->C->F
\ \
develop \ D'
\
feature A D->E
因此,如果您尝试将feature A
off develop
,如果您不进行交互式重新设置,则 git 将无法识别 D 和 D' 是相同的提交,您最终会得到以下结果:
master A->B->C->F
\
develop D'
\
feature A D->E
为了解决这个问题,当从develop
重新绑定feature A
时,以交互方式执行并告诉 git 删除D
,因为您知道它与 D' 相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.