温馨提示×

Linux GitLab如何回滚

小樊
49
2026-08-24 22:54:16
栏目: 智能运维

Linux 上运行的 GitLab(无论是 Omnibus 安装还是 Docker/K8s),常见“回滚”场景和对应做法如下。请先对照你属于哪种情况。


一、最常见:GitLab 版本回滚(升级后出问题)

✅ 适用于:Omnibus GitLab(rpm/deb 安装)

1️⃣ 查看已安装版本

cat /opt/gitlab/version-manifest.txt
# 或
gitlab-rake gitlab:env:info

2️⃣ 查看系统中有哪些旧版本包

# CentOS / RHEL
yum list installed | grep gitlab
# 或
rpm -qa | grep gitlab

# Ubuntu / Debian
dpkg -l | grep gitlab

3️⃣ 下载指定版本(示例)

# CentOS
yum install gitlab-ee-16.7.2-ee.0.el7.x86_64

# Ubuntu
apt install gitlab-ee=16.7.2-ee.0

⚠️ 强烈建议先备份

4️⃣ 备份(必须)

gitlab-backup create

备份路径默认:

/var/opt/gitlab/backups/

5️⃣ 回滚 GitLab 版本

# 停止服务
gitlab-ctl stop

# 降级
yum downgrade gitlab-ee-旧版本
# 或 apt install gitlab-ee=旧版本

# 重新配置
gitlab-ctl reconfigure
gitlab-ctl restart

二、Git 代码回滚(不是 GitLab 系统)

✅ 仅回滚某次提交(推荐)

git revert <commit_id>
git push origin main

安全,不改变历史


✅ 回滚到某个历史版本(慎用)

git reset --hard <commit_id>
git push -f origin main

⚠️ 危险操作

  • 会改写历史
  • 团队协作仓库不推荐
  • 需管理员权限

三、GitLab 数据回滚(数据库 / 仓库)

✅ 使用备份恢复

# 停止相关服务
gitlab-ctl stop puma
gitlab-ctl stop sidekiq

# 恢复
gitlab-backup restore BACKUP=timestamp_gitlab_backup.tar

# 重启
gitlab-ctl reconfigure
gitlab-ctl restart

四、Docker GitLab 回滚

1️⃣ 查看当前镜像版本

docker ps
docker images | grep gitlab

2️⃣ 拉取旧版本

docker pull gitlab/gitlab-ee:16.7.2-ee.0

3️⃣ 停止并重新运行

docker stop gitlab
docker rm gitlab

docker run -d \
  --name gitlab \
  -v gitlab-config:/etc/gitlab \
  -v gitlab-logs:/var/log/gitlab \
  -v gitlab-data:/var/opt/gitlab \
  gitlab/gitlab-ee:16.7.2-ee.0

⚠️ 数据卷不变,只换 GitLab 版本


五、推荐回滚顺序(安全)

  1. ✅ 先备份
  2. ✅ 尝试 gitlab-ctl stop 后回滚
  3. ✅ 不要直接删数据目录
  4. ✅ 先回滚 GitLab 版本,再恢复数据

六、你可以直接告诉我

我可以直接给你精确命令,只需说明:

  1. ✅ GitLab 安装方式(Omnibus / Docker / K8s)
  2. ✅ 当前版本
  3. ✅ 想回滚到哪个版本
  4. ✅ 是 GitLab 系统 还是 某个 Git 仓库

例如:

“Omnibus 安装,16.9 回滚到 16.7,CentOS 7”

0