为什么Git不允许我再快进合并?如果我尝试使用--ff-only
强制它,我会收到消息“致命:不可能快进,中止”。我意识到merge --no-ff
有很大的优势,但我很困惑为什么我现在不能--ff-only
?
答案 0 :(得分:58)
您的分支机构不再直接基于您尝试将其合并到的分支机构 - 例如另一个提交已添加到不在您的分支中的目标分支。因此,您无法快进(因为快进需要您的分支完全包含目标分支)。
您可以在目标分支(git rebase <destination branch>
)之上重新分支您的分支以重新提交提交,以便它们快进,或者您可以定期合并。
答案 1 :(得分:20)
git pull --rebase
。与其他解决方案不同,您无需知道目标分支的名称。
答案 2 :(得分:14)
git pull
不能解决问题,如果您想合并当前更改和来自从原点拉取分支的更改,请执行以下操作:-
git merge origin/BRANCH_NAME
答案 3 :(得分:11)
出现此错误的原因是“合并冲突”。如果对GitHub文件进行了多次编辑/更新而没有在更新的每个阶段上拉您的更改,则将导致合并冲突。
正常情况:-
$ git pull
注意:-您将收到一个错误。 Fatal: Not possible to fast-forward, aborting
试试这个:-
$ git pull origin master --rebase
注意:-现在,执行此命令后,您将遇到合并冲突问题。因此,现在您可以转到文件并手动解决冲突。Merge conflict error
答案 4 :(得分:1)
git pull --no-ff
-> 通过 --no-ff 关闭快进
答案 5 :(得分:1)
如果在本地分支上执行 git pull origin master
时遇到此问题,请在记事本中打开 .gitconfig
(通常隐藏在 C:\Users\Myname 中)并添加这两行
[pull]
ff = no
保存配置并再次尝试git pull origin master
答案 6 :(得分:0)
这是因为您启用了仅快进选项。这里的事情是您从分支中拉出将在本地git中创建一个合并提交,而“仅快进”选项不允许在拉出时创建一个合并提交。
对于一个大团队来说,您将花费大量的时间来解决和解决冲突,并且每次拉动都会导致冲突。
我建议您从git本地配置文件中删除ff =仅一行。
$ cd到我的项目根目录
$ nano .git / config
[pull]
ff = only // remove this line
rebase = false