【问题标题】:Fatal: Not possible to fast-forward, aborting致命:无法快进,中止
【发布时间】:2022-05-09 15:48:55
【问题描述】:

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

【问题讨论】:

    标签: git


    【解决方案1】:

    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 config --global pull.rebase true
    • 今天为我工作 ;)
    【解决方案2】:

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

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

    【讨论】:

    • 这怎么可能?这是不正确的。一定是某个设置发生了变化。
    • @mathtick 这条消息来自你的 pull 配置被设置为 ff 从命令 git config pull.ff only
    • “快进要求您的分支完全包含目标分支”似乎落后了。应该是“快进要求您的分支完全包含在目标分支中”
    • @huyz 没有;你在这里颠倒了“你的”的意思。
    • git config --global pull.rebase true
    【解决方案3】:

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

    【讨论】:

    • 是git自己建议的。
    【解决方案4】:
    • 如果
    git pull
    

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

    git merge origin/BRANCH_NAME
    
    • 然后,解决合并冲突(如果有)并在当天完成。

    【讨论】:

    • 合并选项正是我想要的,我认为这更干净
    【解决方案5】:

    这是因为您启用了仅快进选项。这里的问题是,您从分支中拉取将在您的本地 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的决定可能会很自以为是,我个人更喜欢它,但这取决于团队的决定。
    • @Davos 我有点同意你的看法。但一般来说,由于时间限制,大多数开发团队不使用 rebase 策略。但我同意你的看法。这应该是一个团队的决定。
    • 爱你。
    【解决方案6】:

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

    [pull]
        ff = no
    

    保存配置并再次尝试git pull origin master

    【讨论】:

    • git pull origin master --ff/--no-ff/--ff-only 是各自的一次选项。
    【解决方案7】:

    如果您有提交,请尝试撤消并再次拉取!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-10
      • 2013-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多