Git 即使两个分支应该同步,也不会快进合并

Git won't fast-forward merge even though the two branches should be in sync

我有两个分支,devnext,其中 nextdev 分支出来。分支有点分歧,所以当我对 dev 进行修补程序时,我按预期通过合并提交将更新合并到 next 中。分支上的最新提交如下所示:

// dev
123455 Latest dev commit
123454 Earlier dev commits...

// next
123456 Merge branch 'dev' into next
123455 Latest dev commit
123454 Earlier dev and next commits...

现在我又提交了 dev,但是当我尝试将它合并到 nextgit merge --ff-only dev 时,它说快进是不可能的。分支刚刚同步,怎么会这样?

当您将 dev 合并到 next 时,您只是使 nextdev 同步,但您没有更改 dev 根本。这意味着 dev 没有 next 的所有更改。

快进会将 next 分支移动到与 dev 完全相同的提交,但这会导致您丢失 next 更改,因此它不会工作。

A - B - C <- dev
 \       \
  D - E - F <- next

在我的示例中,dev包含A、B和C,而next包含A、B、C、D、E和F。因此,您无法合并dev 进入 next 而不进行合并提交,因为您将丢失 D、E 和 F。