Git 解决分支冲突
昨天我在处理项目时我尝试使用 git pull
命令从远程分支中拉取更改的内容,但最终报错:"fatal: Need to specify how to reconcile divergent branches"
, 这阻碍了我的工作。我决定写一篇关于这个问题的文章,以便它也能帮助你们。
解决了“reconcile divergent branches”
如果您使用 Git
,那么在尝试从远程存储库执行 git pull 时出现此错误并不罕见。虽然大多数时候您会看到"fatal: Need to specify how to reconcile divergent branches"
警告,但有时您会看到它是致命错误。如果错误显示为警告,那么您仍然可以从存储库中提取更改,但如果它显示为致命错误,那么您将无法继续进行。
1 | $ git pull origin main |
要解决这个错误,您可以有以下两种解决方案并应用适合您的解决方案。但在此之前,请使用git --version
命令检查当前的 git 版本。发现以下解决方案运行良好Git 2.27.0
。
1 | $ git --version |
解决方案1:切换到合并策略
当存在不在本地分支上的远程更改时,需要解决它们。默认的 Git 行为是合并,这将在本地分支上创建一个新的提交来解决这些更改。您可以使用git config pull.rebase false
命令切换回默认合并策略,而不是使用变基策略。
1 | $ git config pull.rebase false |
切换回默认策略后,您可以再次尝试运行git pull origin main
命令以从分支中提取所有更改main。这次您可以看到所有更改现在都已由'ort'
策略合并。查看此处以了解有关 ort
策略的更多信息。
1 | $ git pull origin main |
解决方案2:切换到快进策略
有时您的默认策略只是 FF
。因此,要切换回此策略,您需要运行git config --global pull.ff only
如下所示的命令
1 | $ git config --global pull.ff only |
这会将以下行添加到$HOME/.gitconfig
:
1 | [pull] |
但这里还需要注意的是,只有在不创建新提交的情况下可以“快进”时,Git 才会更新您的分支。如果这无法完成,意味着本地和远程存在分歧,则git config --global pull.ff only
只需中止并显示错误消息。