Git rebase Feature分支弄乱了对develop / master分支的pull请求中的提交

我有以下情况:

  • 分支机构:正在生产的产品,可以包含修补程序
  • Develop-branch:开发人员用来创建请求的分支
  • 功能分支:我们为开发人员正在实现的功能创建的分支。

开发人员完成工作后,将在开发分支上创建拉取请求。批准后,我们​​将功能分支挤压合并到开发分支,以便不包括开发人员在功能分支上所做的所有提交。这使我们可以在develop分支上拥有清晰干净的git历史记录。

有时候,功能分支需要从开发分支重新构建基础,这才是麻烦的开始。当我们使用开发分支对功能分支进行基础构建时,突然来自开发分支的很多提交都包含在开发分支中。拉取请求。

如何避免这种情况,使PR仅包含来自功能分支的实际提交?

proxool 回答:Git rebase Feature分支弄乱了对develop / master分支的pull请求中的提交

我怀疑这是在修补程序发布后从母版进行基础开发之后发生的。

请考虑以下情形:

master   A->B->C
                \
develop          D
                  \
feature A          E

然后,在master(F)中获得一个修补程序,并根据其重新设置develop。重新创建一个带有不同哈希值的“新”提交(D'),因此从git的角度来看,D和D'是两个独立且不相关的提交。 D仍然存在,并且C是其父级,但它不再位于develop上-仅位于feature A上:

master   A->B->C->F
                \  \
develop          \  D'
                  \
feature A          D->E

因此,如果您随后尝试将feature A的基准从develop降低,如果您不进行交互式基准,git将无法识别D和D'是相同的提交,并且您将得到以下结果:

master   A->B->C->F
                   \
develop             D'
                     \
feature A             D->E

要解决此问题,请从feature A重新设置develop的基础上,以交互方式进行操作,并告诉git删除D,因为您知道它与D'相同。 >

本文链接:https://www.f2er.com/2766566.html

大家都在问