Git 即使两个分支应该同步,也不会快进合并
Git won't fast-forward merge even though the two branches should be in sync
我有两个分支,dev
和 next
,其中 next
从 dev
分支出来。分支有点分歧,所以当我对 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
,但是当我尝试将它合并到 next
和 git merge --ff-only dev
时,它说快进是不可能的。分支刚刚同步,怎么会这样?
当您将 dev
合并到 next
时,您只是使 next
与 dev
同步,但您没有更改 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。
我有两个分支,dev
和 next
,其中 next
从 dev
分支出来。分支有点分歧,所以当我对 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
,但是当我尝试将它合并到 next
和 git merge --ff-only dev
时,它说快进是不可能的。分支刚刚同步,怎么会这样?
当您将 dev
合并到 next
时,您只是使 next
与 dev
同步,但您没有更改 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。