首页 > 解决方案 > 从源分支移动提交,但在目标分支将被合并回来时保留它们?

问题描述

我们开始在 dev 分支中开发一个特性,但意识到这需要更长的时间,所以我们在开发过程中创建了一个特性分支来进行剩余的更改。

dev 分支中的提交不连续。我们希望恢复那些在 dev 分支上的提交,以便在没有任何功能分支代码的情况下准备发布。

我们有这个:

A--Fa--B--Fb--C--D--E--F--G   <-- dev
               \
                Fc--Fd--Fe    <-- feature

我们想要这个:

A--B--C--D--E--F--G   <-- dev
 \
  Fa--Fb--Fc--Fd--Fe  <-- feature

这很容易通过恢复 dev 分支上的Fa,Fb提交来实现。但是,到了合并特性分支的时候,git 会抱怨吗?

A--B--C--D--E--F--G--H--   <-- dev
 \                  /
  Fa--Fb--Fc--Fd--Fe        <-- feature

答案似乎是肯定的......我想知道是否有办法避免这种情况?

这个问题几乎正是我要问的——但我的提交并不连续。这有关系吗?

我不能(轻易)重写历史——但我想这是可能的(只有 2 个其他开发人员拥有存储库)。

标签: git

解决方案


在我看来,您可以硬重置您的开发分支以提交 A。然后您可以在那里启动一个新功能分支,然后为两个分支选择适当的提交。完成对提交的挑选后,删除旧的功能分支。我想你会优雅地达到你想要的状态。


推荐阅读