CentOS 7 升级 Git:从 1.8.3.1 升级到 2.31.6

在使用 GitLab Runner 执行 CI 任务时,出现了如下错误:

Running with gitlab-runner 18.9.0
Using Shell executor...
Fetching changes with git depth set to 20...
Reinitialized existing Git repository

fatal: git fetch-pack: expected shallow list
fatal: The remote end hung up unexpectedly
ERROR: Job failed: exit status 1

该错误通常出现在 Git 版本过旧 + shallow fetch(浅克隆) 的情况下。

检查服务器环境:

cat /etc/os-release
git --version
uname -a

输出如下:

CentOS Linux 7 (Core)
git version 1.8.3.1
Linux 3.10.0-1160...

CentOS 7 官方仓库中的 Git 版本是 1.8.3.1,发布时间是 2014 年,已经非常陈旧。
GitLab Runner、GitHub Actions 等现代 CI 系统普遍需要 Git 2.x 才能稳定运行。

因此需要升级 Git。


一、为什么不直接用 yum 升级

CentOS 7 官方仓库提供的 Git 版本仍然是:

git 1.8.3.1

即使执行:

yum update git

也不会升级到新版本。

因此有三种方式:

方法 推荐程度
IUS 仓库
SCL 软件集合 一般
源码编译安装 推荐

本文使用 源码编译安装,原因:

  • 不污染系统仓库
  • 可以选择稳定版本
  • 不影响系统自带 /usr/bin/git
  • 方便回退

二、安装编译依赖

首先安装 Git 编译所需的依赖:

yum install -y \
curl-devel \
expat-devel \
gettext-devel \
openssl-devel \
zlib-devel \
perl-ExtUtils-MakeMaker \
gcc \
make \
wget \
tar

如果系统没有编译工具链,可以安装开发工具组:

yum groupinstall -y "Development Tools"

三、下载 Git 源码

/usr/local/src 目录下载源码:

cd /usr/local/src

wget https://www.kernel.org/pub/software/scm/git/git-2.31.6.tar.gz

tar -xzf git-2.31.6.tar.gz

cd git-2.31.6

说明:

  • Git 最新版本虽然更高,但部分新版本在 CentOS 7 的 glibc 环境下编译会出现 sys/random.h 等问题。
  • 2.31.x 是一个兼容性较好的版本。
  • 如果wget下载不下来,可以现在能翻墙的机器上下载了之后再传递到服务器上面

四、编译并安装 Git

按照 Git 官方推荐流程:

cd git-2.31.6

make prefix=/usr/local/git all
make prefix=/usr/local/git install

安装完成后,Git 将位于:

/usr/local/git/bin/git

五、配置系统 PATH

为了让系统优先使用新版本 Git,需要修改 PATH。

创建 profile 文件:

cat >/etc/profile.d/git.sh <<'EOF'
export PATH=/usr/local/git/bin:$PATH
EOF

chmod +x /etc/profile.d/git.sh
source /etc/profile.d/git.sh
git --version
which git

重新加载环境变量:

source /etc/profile.d/git.sh

验证 Git 版本:

git --version
which git

示例输出:

git version 2.31.6
/usr/local/git/bin/git

总结

CentOS 7 默认 Git 版本 1.8.3.1 已经过于陈旧,在现代 CI/CD 环境中容易出现兼容问题。

升级步骤:

  1. 安装编译依赖
  2. 下载 Git 源码
  3. configure + make
  4. 修改 PATH
  5. 验证 GitLab Runner 环境

最终升级结果:

git version 1.8.3.1  →  git version 2.31.6

CI 拉取代码问题也随之解决。

在这里插入图片描述

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐