Ser*_*ijn 6 git git-merge git-rebase feature-branch git-squash
我有以下场景:
开发人员完成工作后,他会在开发分支上创建拉取请求。批准后,我们将功能分支压缩合并到开发分支,以便不包括开发人员在功能分支上所做的所有提交。这使我们能够在开发分支上拥有清晰干净的 git 历史记录。
有时功能分支需要从 develop 分支变基,这就是麻烦的开始。
如何避免这种情况,以便 PR 仅包含来自功能分支的实际提交?
我怀疑在修补程序发布后从 master 重新建立开发基础后会发生这种情况。
考虑以下场景:
master A->B->C
\
develop D
\
feature A E
Run Code Online (Sandbox Code Playgroud)
然后,您可以在 F 中获得修补程序master,并develop对其进行变基。rebase 使用不同的哈希创建一个“新”提交 (D'),因此从 git 的角度来看,D 和 D' 是两个独立且不相关的提交。D 仍然存在,C 是它的父级,但它不再 on develop- 只 on feature A:
master A->B->C->F
\ \
develop \ D'
\
feature A D->E
Run Code Online (Sandbox Code Playgroud)
因此,如果你随后尝试 rebase feature Aoff develop,如果你不进行交互式 rebase,git 将无法识别 D 和 D' 是相同的提交,并且最终会得到以下结果:
master A->B->C->F
\
develop D'
\
feature A D->E
Run Code Online (Sandbox Code Playgroud)
feature A为了解决这个问题,当从变基时develop,以交互方式进行并告诉 git 删除D,因为你知道它与 D' 相同。
| 归档时间: |
|
| 查看次数: |
591 次 |
| 最近记录: |