【发布时间】:2022-05-09 15:48:55
【问题描述】:
为什么 Git 不再允许我快进合并?如果我尝试使用--ff-only 强制它,我会收到消息“致命:无法快进,正在中止”。我意识到merge --no-ff 有巨大的优势,但我只是纳闷为什么我现在不能--ff-only?
【问题讨论】:
标签: git
为什么 Git 不再允许我快进合并?如果我尝试使用--ff-only 强制它,我会收到消息“致命:无法快进,正在中止”。我意识到merge --no-ff 有巨大的优势,但我只是纳闷为什么我现在不能--ff-only?
【问题讨论】:
标签: git
git pull --rebase。与其他解决方案不同,您不需要知道目标分支的名称。
如果您的上游分支未设置,请尝试git pull origin <branch> --rebase(感谢 cmets 中的 @Rick)
要全局设置此选项,请使用git config --global pull.rebase true(感谢下面的@Artur Mustafin)
【讨论】:
git pull origin <branch> --rebase,它似乎可以解决问题。谢谢!
git rebase --continue。
您的分支不再直接基于您尝试将其合并到的分支 - 例如另一个提交被添加到不在您的分支中的目标分支。因此,您不能快进(因为快进要求您的分支完全包含目标分支)。
您可以在目标分支 (git rebase <destination branch>) 之上重新设置您的分支以重新处理提交,以便它们能够快速前进到其中,或者您可以进行常规合并。
【讨论】:
ff 从命令 git config pull.ff only
git pull --no-ff -> 通过 --no-ff 关闭快进
【讨论】:
git pull
并不能解决问题,如果您想合并当前更改和来自从原点拉取分支的更改,请执行以下操作:-
git merge origin/BRANCH_NAME
【讨论】:
这是因为您启用了仅快进选项。这里的问题是,您从分支中拉取将在您的本地 git 中创建合并提交,并且仅快进选项不允许在拉取时创建合并提交。
在一个大团队的情况下,你最终会在很多时间和每次来自拉取的提交中重新定位和解决冲突。
我建议你从 git 本地配置文件中删除 ff = only 行。
$ cd to-my-project-root-dir
$ nano .git/config
[pull]
ff = only // remove this line
rebase = false
【讨论】:
ff = only 时才会发生这种情况,但这不是原因。如果发生错误,则表明主控发生了非标准的事情,请参阅stackoverflow.com/a/28973624/1335793 以获得确定发生情况的好方法。例如,我在尝试从 master 中提取时遇到了这个错误,而我实际上所做的是在 master 上本地提交了一些远程操作中不存在的内容。在一个团队中,我们永远不应该致力于掌握或推动掌握;如果我禁用了 ff 那么它就不会显示我的错误。
ff = only的决定可能会很自以为是,我个人更喜欢它,但这取决于团队的决定。
如果您在本地分支上执行 git pull origin master 时遇到此问题,请在记事本中打开 .gitconfig(通常隐藏在 C:\Users\Myname 中)并添加这两行
[pull]
ff = no
保存配置并再次尝试git pull origin master
【讨论】:
git pull origin master --ff/--no-ff/--ff-only 是各自的一次选项。
如果您有提交,请尝试撤消并再次拉取!
【讨论】: