248

为什么 Git 不再允许我快进合并?如果我尝试使用 强制它--ff-only,我会收到消息“致命:无法快进,正在中止”。我意识到这样做有很大的优势merge --no-ff,但我很困惑为什么我--ff-only现在不能?

4

6 回答 6

385

git pull --rebase. 与其他解决方案不同,您不需要知道目标分支的名称。

如果您的上游分支未设置,请尝试git pull origin <branch> --rebase(在评论中感谢@Rick)

于 2017-04-17T22:47:57.667 回答
157

您的分支不再直接基于您尝试将其合并到的分支 - 例如,另一个提交被添加到不在您的分支中的目标分支。因此,您不能快进(因为快进要求您的分支完全包含目标分支)。

您可以在目标分支 ( ) 之上重新设置您的分支git rebase <destination branch>以重新处理提交,以便它们能够快进到该分支中,或者您可以进行常规合并。

于 2012-10-28T03:57:50.600 回答
40
  • 如果
git pull

不能解决问题,如果您想合并当前更改和来自从原点拉取分支的更改,请执行以下操作:-

git merge origin/BRANCH_NAME
  • 之后,解决合并冲突(如果有)并在当天完成。
于 2021-03-02T13:57:40.180 回答
33

git pull --no-ff-> 通过 --no-ff 关闭快进

于 2021-06-17T13:52:45.290 回答
15

如果git pull origin master在本地分支上执行此操作时遇到此问题,请.gitconfig在记事本中打开(通常隐藏在 C:\Users\Myname 中)并添加这两行

[pull]
    ff = no

保存配置并重git pull origin master

于 2021-07-07T18:49:49.477 回答
15

这是因为您启用了仅快进选项。这里的事情是您从分支中拉出将在您的本地 git 中创建合并提交,并且仅快进选项不允许在拉取时创建合并提交。

在一个大团队的情况下,你最终会在很多时间和每次来自拉取的提交中重新定位和解决冲突。

我建议您从 git 本地配置文件中删除 ff = only 行。

$ cd to-my-project-root-dir

$ 纳米 .git/config

[pull]
        ff = only // remove this line
        rebase = false

于 2020-12-13T20:48:27.850 回答