Ubuntu20.04下Git升级至2.37后git pull报preserve无效错误,降级失败如何解决?
解决Git升级后
git pull报错及降级依赖问题 我来帮你搞定这个问题,给你两种可行方案,优先推荐第一种无需降级的方法,操作更简单也不会影响系统其他依赖:
方案一:修复Git配置(推荐)
Git在2.26版本之后就废弃了pull.rebase的preserve选项,替换成了merges,这就是你升级到2.37后报错的核心原因。只需要修改配置就能解决:
- 先检查当前的
pull.rebase配置,确认是全局还是单个仓库的设置:git config --get-all pull.rebase - 如果是全局配置,执行以下命令修改:
git config --global pull.rebase merges - 如果只是单个仓库的问题,进入该仓库目录,去掉
--global参数执行:git config pull.rebase merges - 也可以直接编辑配置文件:
- 全局配置文件路径:
~/.gitconfig,找到pull.rebase=preserve改成pull.rebase=merges - 单个仓库配置文件路径:仓库根目录下的
.git/config,同样修改对应内容
- 全局配置文件路径:
修改完成后再执行git pull,应该就能正常运行了。
方案二:解决降级的依赖问题
如果你坚持要降级到2.25版本,需要同时降级git-man(因为Git依赖对应版本的git-man):
- 先确认对应版本的git-man编号,执行:
找到和apt-cache showpkg git-mangit=1:2.25.1-1ubuntu3.5匹配的git-man版本,应该是1:2.25.1-1ubuntu3.5 - 同时安装指定版本的Git和git-man:
sudo apt-get install git=1:2.25.1-1ubuntu3.5 git-man=1:2.25.1-1ubuntu3.5 - 安装完成后,用以下命令确认版本是否降级成功:
git --version
补充说明
出现这个问题的核心逻辑是:Git 2.26版本对pull.rebase的选项做了调整,preserve被标记为废弃并由merges替代,升级后原有配置中的无效值导致git pull报错。而降级时因为系统中当前的git-man版本高于你要安装的Git版本,触发了依赖检查失败,所以需要同时指定两个包的版本来解决。
内容的提问来源于stack exchange,提问作者Mona
相关产品推荐
相关产品推荐

