配置git pull始终使用rebase=merges后未生效,该如何解决?
解决
git pull不使用全局配置的pull.rebase=merges问题 问题核心原因
你遇到的情况是全局配置了pull.rebase=merges但git pull仍尝试执行merge(触发pull.ff=only的报错),但手动执行git pull --rebase正常。这大概率是本地仓库配置覆盖了全局配置,或是全局配置未正确生效。
排查与解决步骤
确认全局配置有效性
执行命令检查全局pull.rebase的取值:git config --global --get pull.rebase如果返回值不是
merges,重新执行全局配置命令:git config --global pull.rebase merges检查本地仓库配置是否冲突
进入当前仓库,执行命令查看本地pull.rebase设置:git config pull.rebase- 若返回
false或空值,说明本地配置覆盖了全局规则,可同步本地配置为全局值:git config pull.rebase merges - 若不需要本地单独配置,也可直接删除本地的
pull.rebase设置,让仓库继承全局配置:git config --unset pull.rebase
- 若返回
配置优先级说明
Git配置优先级为:本地仓库配置 > 全局用户配置 > 系统配置。当本地存在pull.rebase设置时,会直接忽略全局配置。另外,pull.rebase生效后,pull.ff=only不会影响rebase流程(因为rebase不执行merge操作),无需修改该配置。验证修复结果
调整配置后执行git pull,此时应该会自动以rebase模式拉取远程代码,不会再触发快进失败的报错。
内容的提问来源于stack exchange,提问作者Liu Hao
相关产品推荐
相关产品推荐

