为什么 Git 不再允许我快进合并?如果我尝试使用 强制它--ff-only
,我会收到消息“致命:无法快进,正在中止”。我意识到这样做有很大的优势merge --no-ff
,但我很困惑为什么我--ff-only
现在不能?
6 回答
git pull --rebase
. 与其他解决方案不同,您不需要知道目标分支的名称。
如果您的上游分支未设置,请尝试git pull origin <branch> --rebase
(在评论中感谢@Rick)
您的分支不再直接基于您尝试将其合并到的分支 - 例如,另一个提交被添加到不在您的分支中的目标分支。因此,您不能快进(因为快进要求您的分支完全包含目标分支)。
您可以在目标分支 ( ) 之上重新设置您的分支git rebase <destination branch>
以重新处理提交,以便它们能够快进到该分支中,或者您可以进行常规合并。
- 如果
git pull
不能解决问题,如果您想合并当前更改和来自从原点拉取分支的更改,请执行以下操作:-
git merge origin/BRANCH_NAME
- 之后,解决合并冲突(如果有)并在当天完成。
git pull --no-ff
-> 通过 --no-ff 关闭快进
如果git pull origin master
在本地分支上执行此操作时遇到此问题,请.gitconfig
在记事本中打开(通常隐藏在 C:\Users\Myname 中)并添加这两行
[pull]
ff = no
保存配置并重git pull origin master
试
这是因为您启用了仅快进选项。这里的事情是您从分支中拉出将在您的本地 git 中创建合并提交,并且仅快进选项不允许在拉取时创建合并提交。
在一个大团队的情况下,你最终会在很多时间和每次来自拉取的提交中重新定位和解决冲突。
我建议您从 git 本地配置文件中删除 ff = only 行。
$ cd to-my-project-root-dir
$ 纳米 .git/config
[pull]
ff = only // remove this line
rebase = false