致命:不可能快进,中止

时间:2012-10-28 03:40:19

标签: git

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

7 个答案:

答案 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