赞
踩
到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拉取对应的镜像文件。
- #拉取镜像
- docker pull gitlab/gitlab-ee:13.3.5-ee.0
- #启动gitlab服务
- docker run -d \
- --hostname gitlab \
- -p 443:443 -p 80:80 -p 22:22 \
- --name gitlab \
- -v /opt/gitlab_docker/config:/etc/gitlab \
- -v /opt/gitlab_docker/logs:/var/log/gitlab \
- -v /opt/gitlab_docker/data:/var/opt/gitlab \
- gitlab/gitlab-ee:13.3.5-ee.0
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
a.gitlab服务器迁移时,确保两服务器上运行的gitlab版本一致,不然导入的时候会报错GitLab version mismatch:
b.在迁移的时候,如果是GitLab Enterprise Edition代码版本,则BACKUP=后面要加上-ee,不然会报找不到文件。
Gitlab/Github要下载或者回退历史某个版本的代码,可在本地原来的代码目录(回退)或者新建一个目录执行checkout最新代码(下载)目录中,执行git log查看历史的版本列表,也可以在Gitlab等的管理页点击提交次数查看每次的提交记录,找到对应版本的提交SHA值,从而要找到要下载或者回退的代码版本。
在 git 仓库查看 SHA ,或输入命令 git log 查看提交的历史 commit 。获取历史版本哈希值,并右键copy.
使用命令:git checkout SHA 值来退回至SHA对应的版本。如下:
- # git log
- ...
- commit 3f26fc296ba66d491cde25809be37b861188bdc7
- Author: 04007.cn<kermit@04007.cn>
- Date: Wed Jun 22 11:36:35 2022 +0800
-
- # 使用git checkout 即恢复至目标的版本
- # git checkout 3f26fc296ba66d491cde25809be37b861188bdc7
- git log
也许因为某些原因我们需要删除一些提交记录,比如我们在中间不小心提交了一些重要密码文件到git上,而只通过删除文件并不能删除记录,在git项目中可以通过提交历史查看到我们之前提交的这些文件,从而暴露资料。那怎么删除commit的记录呢?
有办法的,不过操作的时候要小心。首先我们要删除操作记录,我们要找到我们要删除到的哪条记录,从而git知道我们要删除掉哪些提交记录,可以在项目管理中页面-/commits/master 中找到这个记录,然后在右边可以看到有按钮copy commit SHA,对就是这个很长字符串,也可以在git shell命令窗口中通过git log命令查看到,然后再在窗口中执行:
- #b197e919d28afdd2d00d9e8de4212d906fb41104就是想要恢复到的版本commit id
- git reset --hard b197e919d28afdd2d00d9e8de4212d906fb41104
- #提交
- 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下选择自己的账号,允许你可以提交即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。