致命:无法快进,正在中止

wooyq4lh  于 2022-09-21  发布在  Git
关注(0)|答案(12)|浏览(530)

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

uqjltbpv

uqjltbpv1#

免责声明:这些命令会将远程分支的更改带到您的分支。

git pull --rebase。与其他解决方案不同,您不需要知道目标分支机构的名称。

如果您的上游分支没有设置,请尝试git pull origin <branch> --rebase(在评论中将信用添加到@Rick)

要全局设置此选项,请使用git config --global pull.rebase true(归功于下面的@ArturMustafin)

oyjwcjzk

oyjwcjzk2#

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

您可以将分支重新定位到目标分支(git rebase <destination branch>)的顶部,以重新执行提交,以便它们可以快进到其中,或者您可以执行常规合并。

cygmwpex

cygmwpex3#

使用选项--no-ff关闭一次拉入的快进:

git pull --no-ff
mgdq6dx1

mgdq6dx14#

  • 如果
git pull

如果要合并当前更改和从原始位置拉入分支所产生的更改,请执行以下操作:-

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

uqcuzwp85#

这是因为您已经启用了仅快进选项。这里的问题是,从分支拉入将在本地GIT中创建合并提交,而仅快进选项不允许在拉入时创建合并提交。

在大型团队的情况下,您最终将在很多时间内重新建立基础并解决冲突,因为每个提交都来自拉动。

我建议您从git本地配置文件中删除ff=only行。
$cd to-my-project-根目录

$Nan.git/config

[pull]
        ff = only // remove this line
        rebase = false
ki0zmccv

ki0zmccv6#

如果在本地分支上执行git pull origin master时出现此错误,请在记事本中打开.gitconfig(通常隐藏在C:\USERS\Myname中),然后添加以下两行

[pull]
    ff = no

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

mrphzbgm

mrphzbgm7#

这是我的工作,你可以用它。

gpnt7bae

gpnt7bae8#

您可以在终端上尝试此操作,它实际上编辑您的<.gitconfig>文件并设置ff=no

git config pull.ff no
2eafrhcq

2eafrhcq9#

我面临着同样的类型问题,我猜我们中的许多人在进行结对编程时都会面临这个问题,我们在分支中也有来自其他用户的传入提交。这是我面对的步骤,并通过git pull --no-rebase解决了它们

➜  graphql-tutorial git:(filtering)  git config pull.ff only 
➜  graphql-tutorial git:(filtering) git pull
fatal: Not possible to fast-forward, aborting.
➜  graphql-tutorial git:(filtering) git merge 
➜  graphql-tutorial git:(filtering)  git config pull.rebase false 
➜  graphql-tutorial git:(filtering) git pull                      
fatal: Not possible to fast-forward, aborting.
➜  graphql-tutorial git:(filtering) git pull --no-rebase
Merge made by the 'ort' strategy.
. <file name>
. <file name>
. <file name>
. <file name>
 5 files changed, 47 insertions(+), 9 deletions(-)
 create mode 100644 app/models/auth_token.rb
5q4ezhmt

5q4ezhmt10#

这对我很管用

git pull --rebase <remote> <branch>
lsmd5eda

lsmd5eda11#

git pull origin main --rebase
git pull --rebase

上面的两个命令对我很管用。但唯一的问题是,我也在当前分支中看到了主分支的提交。

fnatzsnv

fnatzsnv12#

如果你有一个提交,试着撤销它,然后再拉一次!

相关问题