CentOS 7 升级 Git:从 1.8.3.1 升级到 2.31.6
·
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 环境中容易出现兼容问题。
升级步骤:
- 安装编译依赖
- 下载 Git 源码
configure + make- 修改 PATH
- 验证 GitLab Runner 环境
最终升级结果:
git version 1.8.3.1 → git version 2.31.6
CI 拉取代码问题也随之解决。

更多推荐




所有评论(0)