当前位置:   article > 正文

使用 Docker 启动 Gitlab 服务并整体迁移 Gitlab 项目/Git历史版本获取和版本回退/Git如何删除提交的log日志记录_gitlab 镜像历史版本

gitlab 镜像历史版本

一、使用 Docker 启动 Gitlab 服务并整体迁移 Gitlab 项目

    到docker的镜像仓库中去寻找对应版本的镜像,如我这里要找的是gitlab-ee:13.3.5版本。在仓库中搜索到的tag页面地址如下:https://hub.docker.com/r/gitlab/gitlab-ee/tags?page=1&ordering=last_updated&name=13.3 然后使用docker拉取对应的镜像文件。

  1. #拉取镜像
  2. docker pull gitlab/gitlab-ee:13.3.5-ee.0
  3. #启动gitlab服务
  4. docker run -d \
  5. --hostname gitlab \
  6. -p 443:443 -p 80:80 -p 22:22 \
  7. --name gitlab \
  8. -v /opt/gitlab_docker/config:/etc/gitlab \
  9. -v /opt/gitlab_docker/logs:/var/log/gitlab \
  10. -v /opt/gitlab_docker/data:/var/opt/gitlab \
  11. gitlab/gitlab-ee:13.3.5-ee.0

1. Gitlab整体迁移的步骤

    Gitlab整体项目迁移就像Mysql的数据迁移一样,在老项目上导出一个压缩包,在新的项目上导入即可。过程如下:

a.在原gitlab备份旧gitlab,使用命令
gitlab-rake gitlab:backup:create
文件路径在/var/opt/gitlab/backups/中,文件名称是时间戳带上日期等。

b.进入到新的gitlab服务中导入
cd /var/opt/gitlab/backups/
gitlab-rake gitlab:backup:restore BACKUP=1626676976_2021_07_19_13.3.5-ee

2. GitLab迁移时需要注意事项

a.gitlab服务器迁移时,确保两服务器上运行的gitlab版本一致,不然导入的时候会报错GitLab version mismatch:

b.在迁移的时候,如果是GitLab Enterprise Edition代码版本,则BACKUP=后面要加上-ee,不然会报找不到文件。

二、Git/Gitlab/Github下载历史版本代码或者版本回退 

    Gitlab/Github要下载或者回退历史某个版本的代码,可在本地原来的代码目录(回退)或者新建一个目录执行checkout最新代码(下载)目录中,执行git log查看历史的版本列表,也可以在Gitlab等的管理页点击提交次数查看每次的提交记录,找到对应版本的提交SHA值,从而要找到要下载或者回退的代码版本。

    在 git 仓库查看 SHA ,或输入命令 git log 查看提交的历史 commit 。获取历史版本哈希值,并右键copy.

    使用命令:git checkout SHA 值来退回至SHA对应的版本。如下:

  1. # git log
  2. ...
  3. commit 3f26fc296ba66d491cde25809be37b861188bdc7
  4. Author: 04007.cn<kermit@04007.cn>
  5. Date: Wed Jun 22 11:36:35 2022 +0800
  6. # 使用git checkout 即恢复至目标的版本
  7. # git checkout 3f26fc296ba66d491cde25809be37b861188bdc7
  8. git log

三、Git如何删除提交的log日志记录

    也许因为某些原因我们需要删除一些提交记录,比如我们在中间不小心提交了一些重要密码文件到git上,而只通过删除文件并不能删除记录,在git项目中可以通过提交历史查看到我们之前提交的这些文件,从而暴露资料。那怎么删除commit的记录呢?

    有办法的,不过操作的时候要小心。首先我们要删除操作记录,我们要找到我们要删除到的哪条记录,从而git知道我们要删除掉哪些提交记录,可以在项目管理中页面-/commits/master 中找到这个记录,然后在右边可以看到有按钮copy commit SHA,对就是这个很长字符串,也可以在git shell命令窗口中通过git log命令查看到,然后再在窗口中执行:

  1. #b197e919d28afdd2d00d9e8de4212d906fb41104就是想要恢复到的版本commit id
  2. git reset --hard b197e919d28afdd2d00d9e8de4212d906fb41104
  3. #提交
  4. git push origin HEAD --force

    操作之后我们再去git项目中查看,就会发现只剩下一条提交日志记录了,其它的都没有了。需要注意且一定要小心的是,这样的删除提交日志实际就是版本恢复,会将当前项目的代码全部回滚到这个版本,所以在操作之前一定要把代码做备份。如果没有备份,建议不要加--hard选项,这样工作区至少还是没有被修改。

    在操作git push origin HEAD --force命令的时候,很可能碰到GitLab: You are not allowed to force push code to a protected branch on this project问题,因为项目master默认会设置保护,目的就是为了防止我们这样随便删除提交日志。
进入项目页面->settings->Repository->Protected Branches,点击我们要操作的主干或分支旁的Unprotect按钮,解除保护,然后去执行我们的git push命令,执行完成后再在Protected Branches添加上保护。有点麻烦是吗?那可以不点Unprotect取消保护,在同一行中有一个Allowed to push下选择自己的账号,允许你可以提交即可。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/940595
推荐阅读
相关标签
  

闽ICP备14008679号