为什么Git不再允许我快进合并?如果我尝试使用--ff-only强制它,我得到消息“致命:无法快进,正在中止。”我意识到merge --no-ff有很大的优势,但我只是想知道为什么我现在不能--ff-only?
--ff-only
merge --no-ff
uqjltbpv1#
免责声明:这些命令会将远程分支的更改带到您的分支。
git pull --rebase。与其他解决方案不同,您不需要知道目标分支机构的名称。
git pull --rebase
如果您的上游分支没有设置,请尝试git pull origin <branch> --rebase(在评论中将信用添加到@Rick)
git pull origin <branch> --rebase
要全局设置此选项,请使用git config --global pull.rebase true(归功于下面的@ArturMustafin)
git config --global pull.rebase true
oyjwcjzk2#
您的分支不再直接基于您尝试将其合并到的分支-例如,向不在您的分支中的目标分支添加了另一个提交。因此,您不能快进(因为快进要求您的分支完全包含目标分支)。
您可以将分支重新定位到目标分支(git rebase <destination branch>)的顶部,以重新执行提交,以便它们可以快进到其中,或者您可以执行常规合并。
git rebase <destination branch>
cygmwpex3#
使用选项--no-ff关闭一次拉入的快进:
--no-ff
git pull --no-ff
mgdq6dx14#
git pull
如果要合并当前更改和从原始位置拉入分支所产生的更改,请执行以下操作:-
git merge origin/BRANCH_NAME
uqcuzwp85#
这是因为您已经启用了仅快进选项。这里的问题是,从分支拉入将在本地GIT中创建合并提交,而仅快进选项不允许在拉入时创建合并提交。
在大型团队的情况下,您最终将在很多时间内重新建立基础并解决冲突,因为每个提交都来自拉动。
我建议您从git本地配置文件中删除ff=only行。$cd to-my-project-根目录
$Nan.git/config
[pull] ff = only // remove this line rebase = false
ki0zmccv6#
如果在本地分支上执行git pull origin master时出现此错误,请在记事本中打开.gitconfig(通常隐藏在C:\USERS\Myname中),然后添加以下两行
git pull origin master
.gitconfig
[pull] ff = no
保存配置并再次尝试git pull origin master
mrphzbgm7#
这是我的工作,你可以用它。
gpnt7bae8#
您可以在终端上尝试此操作,它实际上编辑您的<.gitconfig>文件并设置ff=no
git config pull.ff no
2eafrhcq9#
我面临着同样的类型问题,我猜我们中的许多人在进行结对编程时都会面临这个问题,我们在分支中也有来自其他用户的传入提交。这是我面对的步骤,并通过git pull --no-rebase解决了它们
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
5q4ezhmt10#
这对我很管用
git pull --rebase <remote> <branch>
lsmd5eda11#
git pull origin main --rebase git pull --rebase
上面的两个命令对我很管用。但唯一的问题是,我也在当前分支中看到了主分支的提交。
fnatzsnv12#
如果你有一个提交,试着撤销它,然后再拉一次!
12条答案
按热度按时间uqjltbpv1#
免责声明:这些命令会将远程分支的更改带到您的分支。
git pull --rebase
。与其他解决方案不同,您不需要知道目标分支机构的名称。如果您的上游分支没有设置,请尝试
git pull origin <branch> --rebase
(在评论中将信用添加到@Rick)要全局设置此选项,请使用
git config --global pull.rebase true
(归功于下面的@ArturMustafin)oyjwcjzk2#
您的分支不再直接基于您尝试将其合并到的分支-例如,向不在您的分支中的目标分支添加了另一个提交。因此,您不能快进(因为快进要求您的分支完全包含目标分支)。
您可以将分支重新定位到目标分支(
git rebase <destination branch>
)的顶部,以重新执行提交,以便它们可以快进到其中,或者您可以执行常规合并。cygmwpex3#
使用选项
--no-ff
关闭一次拉入的快进:mgdq6dx14#
如果要合并当前更改和从原始位置拉入分支所产生的更改,请执行以下操作:-
uqcuzwp85#
这是因为您已经启用了仅快进选项。这里的问题是,从分支拉入将在本地GIT中创建合并提交,而仅快进选项不允许在拉入时创建合并提交。
在大型团队的情况下,您最终将在很多时间内重新建立基础并解决冲突,因为每个提交都来自拉动。
我建议您从git本地配置文件中删除ff=only行。
$cd to-my-project-根目录
$Nan.git/config
ki0zmccv6#
如果在本地分支上执行
git pull origin master
时出现此错误,请在记事本中打开.gitconfig
(通常隐藏在C:\USERS\Myname中),然后添加以下两行保存配置并再次尝试
git pull origin master
mrphzbgm7#
这是我的工作,你可以用它。
gpnt7bae8#
您可以在终端上尝试此操作,它实际上编辑您的<.gitconfig>文件并设置ff=no
2eafrhcq9#
我面临着同样的类型问题,我猜我们中的许多人在进行结对编程时都会面临这个问题,我们在分支中也有来自其他用户的传入提交。这是我面对的步骤,并通过
git pull --no-rebase
解决了它们5q4ezhmt10#
这对我很管用
lsmd5eda11#
上面的两个命令对我很管用。但唯一的问题是,我也在当前分支中看到了主分支的提交。
fnatzsnv12#
如果你有一个提交,试着撤销它,然后再拉一次!