【Git】pull 分支报错 fatal: Need to specify how to reconcile divergent branches...
创始人
2025-06-01 18:31:43
0

报错消息
示例图:

在这里插入图片描述
示例代码:
➜  fisher git:(test) git pull origin test
From git.woa.com:wxg-bigdata/fisher
 * branch              test       -> FETCH_HEAD
hint: You have divergent branches and need to specify how to reconcile them.
hint: You can do so by running one of the following commands sometime before
hint: your next pull:
hint: 
hint:   git config pull.rebase false  # merge (the default strategy)
hint:   git config pull.rebase true   # rebase
hint:   git config pull.ff only       # fast-forward only
hint: 
hint: You can replace "git config" with "git config --global" to set a default
hint: preference for all repositories. You can also pass --rebase, --no-rebase,
hint: or --ff-only on the command line to override the configured default per
hint: invocation.
fatal: Need to specify how to reconcile divergent branches.


翻译:
➜fisher git:(test) git pull origin test
从git.woa.com: wxg-bigdata /费舍尔
*分支测试->FETCH_HEAD
提示:您有不同的分支,需要指定如何协调它们。
提示:您可以通过在之前某个时间运行以下命令之一来做到这一点
提示:你的下一招:
提示:
提示:git config pull.rebase false     # 合并(默认策略)
提示:git config pull.rebase true      # Rebase
提示:git config pull.ff only         # 仅快进
提示:
提示:可以将“git config”替换为“git config——global”来设置默认值
提示:首选所有存储库。你也可以传递——rebase,——no-rebase,
提示:或命令行上的——ff-only,以覆盖配置的默认per
提示:调用。
fatal:需要指定如何协调不同的分支。


解决方法
分析:这是由于你拉取pull分支前,进行过merge合并更新分支操作,而其他人在你之前已经push过一个版本,导致版本不一致

第一种解决方法:比较简单

执行git config pull.rebase false
默认将pull下来的代码与现有改动的代码进行合并
但是可能会造成代码冲突,需要处理下这个问题,代码冲突如果2个人都改了同一个文件,需要联系之前push的同学,看看这块代码怎么保存
第二种解决方法:回退到合并之前的代码,在进行pull拉取最新代码

注意:这种解决方法仅适用于2个分支之间的合并(git merge)操作,比如你是将dev开发分支合并到test分支之前没pull,那这时候test分支需要回退到未合并前的版本。
test上合并上去的代码将会丢失,等你test分支能成功pull后,需要重新合并(merge)开发分支dev上的代码合并到test上。所以记得保留dev开发分支这个版本的代码再把test回退到上一个版本,等pull成功,再重新在test分支上合并dev分支代码

查看最近3次提交的历史版本
➜  fisher git:(test) git log -3            # 查看最近3次提交的历史版本
commit da20b931f4e04a61f0f9b4e4726a2e907e566fc9 (HEAD -> test)
Merge: 33df706e 6018c237
Author: 流星
Date:   Wed Jan 19 09:58:40 2022 +0800

    Merge branch 'feture/tapd#870810123' into test

commit 6018c237278f5265e78314049d6642e493ebdb5e (feture/tapd#870810123)
Author: 流星
Date:   Wed Jan 19 09:57:50 2022 +0800

    feat: 发布版本'feture/tapd#870810123'

commit 33df706e780d10af6435bda1fee85430604eebfc
Merge: 1d06cd1f 7589979d
Author: 流星
Date:   Tue Jan 18 16:11:21 2022 +0800

    Merge branch 'feature/date#0118' into test


根据历史版本记录,选择commit地址,回退到自己合并之前的版本
➜  fisher git:(test) git reset --hard 33df706e780d10af6435bda1fee85430604eebfc
HEAD is now at 33df706e Merge branch 'feature/date#0118' into test
1
2
再进行pull更新分支
➜  fisher git:(test) git pull origin test
1
最后再重新合并代码
➜  fisher git:(test) git merge dev
1
记得养成一个良好git发布流程的习惯

# 分支合并发布流程:
git add .            # 将所有新增、修改或删除的文件添加到暂存区
git commit -m "版本发布" # 将暂存区的文件发版
git status             # 查看是否还有文件没有发布上去
git checkout test    # 切换到要合并的分支
git pull            # 在test 分支上拉取最新代码,避免冲突
git merge dev       # 在test 分支上合并 dev 分支上的代码
git push            # 上传test分支代码

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...