温馨提示×

linux gitlab如何恢复仓库

小樊
39
2026-10-04 12:26:47
栏目: 智能运维

在 Linux 上的 GitLab 中“恢复仓库”通常分为几种场景,下面按最常见情况给你说明,你可以对号入座。


一、误删仓库后从 GitLab 备份恢复(推荐方式)

1. 确认你是否开启了 GitLab 备份

GitLab 默认会生成备份文件在:

/var/opt/gitlab/backups/

查看是否有备份:

ls -lh /var/opt/gitlab/backups/

备份文件类似:

1690000000_2023_07_20_gitlab_backup.tar

2. 停止相关服务(避免数据不一致)

gitlab-ctl stop unicorn
gitlab-ctl stop puma
gitlab-ctl stop sidekiq

3. 恢复指定备份

gitlab-rake gitlab:backup:restore BACKUP=1690000000_2023_07_20

⚠️ 注意:

  • BACKUP 只写时间戳部分
  • 会覆盖当前数据(谨慎)

4. 重启 GitLab

gitlab-ctl restart

5. 检查仓库

gitlab-rake gitlab:check SANITIZE=true

二、仓库在 GitLab 中存在,但代码被误删(分支/commit 丢失)

情况 A:分支被删,但本地还有

git push origin <branch-name>

情况 B:commit 被 force push 覆盖

在本地查找历史:

git reflog

恢复:

git checkout -b recover-branch <commit-id>
git push origin recover-branch

三、仓库目录被误删(文件系统级)

GitLab 仓库物理路径一般在:

/var/opt/gitlab/git-data/repositories/

恢复方法

  1. 有备份
    • 用第一种方式整体恢复
  2. 无备份但有本地 clone
    git push --mirror git@gitlab:group/project.git
    

四、删除的仓库在 GitLab 界面中“软删除”

如果你只是:

  • 在 GitLab 网页点了 “Delete Project”
  • 还在 7 天保留期内

恢复步骤

  1. 登录 GitLab
  2. Admin → Projects → Deleted Projects
  3. 找到仓库 → Restore

五、Docker / Kubernetes 中的 GitLab

如果是容器化部署:

docker exec -it gitlab gitlab-rake gitlab:backup:restore BACKUP=xxx

六、没有备份怎么办?

✅ 唯一可靠方式:

  • 从开发者本地仓库强制推送
git push --force --all
git push --force --tags

建议你补充的信息(我可以给你精确命令)

  • GitLab 版本
  • 自建还是 Docker
  • 仓库是“被删了”还是“代码没了”
  • 是否有备份文件

我可以直接给你一套可执行的恢复脚本。

0 踩