一、介绍
代码上线流程图
运维工程师三大核心职能
1、 Git安装
# yum install git #安装Git
# git help #获取帮助
# git help config # git config --global #全局配置文件 --system #系统配置文件 --local #本地配置文件 # git config --global user.name "tom" #配置git使用用户 # git config --global user.email "123@qq.com" #配置git使用邮箱 # git config --global color.ui true #语法高亮 # git config --list #查看配置列表 # cat ~/.gitconfig #查看配置文件
2、Git初始化
# mkdir git_data # cd git_data/ # git init # git status #查看工作区状态
#隐藏文件介绍: branches #分支目录 config #项目配置选项 description #仅供git web程序使用 HEAD #指针指向当前的分支 hooks #包含git钩子文件 info #包含全局排除文件(exclude文件) objects #存放所有数据内容,有info和pack两个文件夹 refs #存放指向数据(分支)的提交对象的指针 index #保存暂存区信息
3、Git常规使用
创建数据-提交数据
Git四种状态
Git基础命令
Git操作
添加 # git add a #添加文件到暂存区 # git add .或* #添加所有改动过的文件到暂存区 # git commit -m 'add a' #提交暂存区所有文件到本地仓库 # git commit -a -m "add a" #提交暂存区所有修改文件到本地仓库 删除 # git rm --cached a #删除暂存区文件 # git rm -f a #删除暂存区和工作目录的文件 修改 # git mv a a.txt #git重命名 # git commit -m "rename a.txt a" #重命名要提交到本地仓库 -------------------------------------------------------------- # git status #查看工作目录和缓存区域的信息 工作目录 (升)git add <file> #工作目录的文件提交到暂存区域 git add .或* #工作目录所有的文件提交到暂存区域 (降)git checkout <file> #从暂存区域撤回到工作目录 暂存区域 (升)git commit -m "备注" #暂存区域的文件提交到本地(远程)仓库,不加-m,需要手动添加 (降)git reset HEAD <file> #从暂存区域撤回到工作目录(在commit之前) 本地仓库 # git log #git提交文件的日志说明(哈希值、用户、邮箱、日期、备注说明等) # git log --oneline #显示一行文件的信息(7位元哈希值、备注信息) # git log --oneline --decorate #查看当前HEAD的指针指向 # git log -p #显示具体文件变化 # git log -1 #只显示一条内容 # git log --pretty=fomat:"%h %cn" #--pretty根据不同的格式显示
对比 # git diff a #对比工作目录和暂存区文件内容 # git diff #对比工作目录和暂存区文件内容 # git diff --cached a #对比暂存区和本地仓库文件内容 # git diff --cached #对比暂存区和本地仓库文件内容 还原 # git reset --hard HEAD^ #还原历史版本上一次 # git reset --hard 3de15d4 #还原到历史的哈希值 # git reflog #查看历史内容
4、Git分支
# git log --oneline --decorate #查看分支指向的 # git branch #查看所在的分支 # git branch test #创建test分支 # git checkout test #切换到test分支 # git checkout -b test #创建并切换分支 # git branch -d test #删除test分支
# git merge test #合并分支(切换到master,才能合并)
# touch aaa bbb ccc ddd # git add aaa # git commit -m 'add aaa' # git add ddd # git commit -m 'add ddd' # git branch testing
# git checkout testing
# git branch
# touch test # git add . # git commit -m 'touch test' # git log --oneline --decorate
# git checkout master
# touch master # git add . # git commit -m "touch master"
# git log --oneline --decorate
# git merge testing #合并分支
# git log --oneline --decorate
合并分支冲突解决
# git checkout master # echo "master" >> aaa # git commit -am "modified aaa master" # git checkout testing # echo "testing" >> aaa # git commit -am "modified aaa testing" # git checkout master # git merge testing #合并有冲突,只能手动修改 # vim aaa # git commit -am "merge testing " #提交
删除分支
# git branch #查看分支机构 # git branch --no-merged #查看未合并的分支 # git branch -d testing #删除分支 # git branch -D testing #强制删除分支
5、Git标签使用
方便回滚,每次提交打个tag # git tag -a v1.0 -m "v1.0" #-a标签名字,-m说明 # git tag -a v2.0 0924a70 -m "v2.0" #某一次打标签 # git tag #查看所有的标签 # git show v1.0 #查看版本的详细信息 # git reset --hard v2.0 #回滚v2.0版本 # git tag -d v2.0 #删除标签
6、Github使用
创建新的仓库
用HTTPS推送
# git remote add origin https://github.com:wuhgzhzx/git_data.git #创建远程仓库 # git push -u origin master #推送本地master到远程仓库
Username for 'https://github.com': #用户
Password for 'https://wuhgzhzx@github.com': #密码
ssh推送
# git remote add origin git@github.com:wuhgzhzx/git_data.git #添加远程仓库,名称为origin
# git remote #查看远程仓库
# ssh-keygen -t rsa #生成秘钥对
# cat ~/.ssh/id_rsa.pub #复制公钥
# git push -u origin master #将代码推送到远程仓库
# git clone https://github.com/wuhgzhzx/git_data.git #克隆远程仓库到本地 # git clone git@github.com:wuhgzhzx/git_data.git #克隆远程仓库到本地
二、 Gitlab
1、安装
官网:https://about.gitlab.com/ 国内镜像:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/ 实验:2G内存 生产:至少4G内存
安装文档:https://about.gitlab.com/installation/
# yum install -y curl policycoreutils-python openssh-server #安装依赖 # wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm # yum install gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
2、配置及结构介绍
# vim /etc/gitlab/gitlab.rb #配置文件 修改IP或域名
external_url 'http://192.168.4.11'
# gitlab-ctl reconfigure #重置配置文件
Gitlab的服务构成: nginx: #静态web服务器 gitlab-workhorse: #轻量级的反向代理 logrotate: #日志管理工具 postgresql: #数据库 redis: #缓存数据库 sidekiq: #消息队列(异步执行) /etc/gitlab/ #配置文件 /var/log/gitlab/ #各个组件的日志目录 /opt/gitlab/ #程序安装目录 /var/opt/gitlab #数据目录 /var/opt/gitlab/git-dfata #存放仓库数据 /var/opt/gitlab/backups/ #备份文件生成的目录 /var/opt/gitlab/git-data/repositories #库默认存储目录 # gitlab-ctl status #查看所有的服务状态 # gitlab-ctl stop #停止所有的服务 # gitlab-ctl stop nginx #单独停止某个服务 # gitlab-ctl tail #查看所有服务的日志 # gitlab-ctl show-config #验证配置文件 # gitlab-ctl reconfigure #重置配置文件
3、Gitlab使用
浏览器输入主机IP访问,第一次登录修改密码
外观配置
Gitlab汉化配置
1、下载汉化补丁 # git clone https://gitlab.com/xhang/gitlab.git
2、查看全部分支版本 # git branch -a
3、对比版本、生成补丁包 # git diff remotes/origin/10-2-stable remotes/origin/10-2-stable-zh > ../10.2.2-zh.diff
4、停止服务器 # gitlab-ctl stop
5、打补丁 # patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < /tmp/10.2.2-zh.diff
6、启动和重新配置 # gitlab-ctl start # gitlab-ctl reconfigure
关闭自动注册
先创建一个组
创建项目
配置公钥,推送代码到gitlab
推送代码
# git remote #查看远程仓库 # git remote remove origin #删除github的仓库 # git remote add origin git@192.168.4.11:test/git_data.git # git push -u origin master
创建开发用户
开发dev用户下载代码
# git clone git@192.168.4.11:test/git_data.git #克隆代码到本地 # cd git_test # echo dev >dev.txt # git commit -am "add dev.txt" # git push -u origin master #推送代码到远程仓库
分支保护(不允许开发直接合并到生产分支)
创建一个dev分支
# git branch dev
# git push -u origin dev
# 登录root用户,进行分支保护
代码合并
1、清除旧分支,创建新分支,并切换 # git branch -d dev # git checkout -b dev # git branch #检查所在的分支 2、推送代码到远程仓库 # git pull #先下载最新的代码 # git push -u origin dev #保障代码的一致性 # echo test >dev.txt #增加新的文件 # git push -u origin dev #上传新的文件到分支
拉去master代码,创建新的分支,添加新的功能,合并分支(不能直接合并,要先上传到dev分支,由dev用户发起合并请求)
处理请求(开发经理审核代码,登录有合并权限的用户,合并请求操作,根据实际情况是否删除源分支)
Git-gui安装
创建秘钥对,并把公钥复制到gitlab,创建用户、组,管理的仓库
修改代码
Gitlab备份与恢复
1、备份(GitLab备份与恢复,版本号要一致)
1、设置开启备份以及备份路径 # vim /etc/gitlab/gitlab.rb gitlab_rails['manage_backup_path'] = true #开启备份 gitlab_rails['backup_path'] = "/data/gitlab/backups" #设置备份路径 gitlab_rails['backup_archive_permissions'] = 0644 #备份文件的权限 gitlab_rails['backup_keep_time'] = 604800 #备份保留天数,单位是秒 2、创建备份路径并且设置权限 # mkdir -p /data/gitlab/backups # chown -R git.git /data/gitlab/backups 3、重启加载配置文件 # gitlab-ctl reconfigure
手动备份
# gitlab-rake gitlab:backup:create
定时备份
# vim gitlab_backup.sh #!/bin/bash /usr/bin/gitlab-rake gitlab:backup:create CRON=1 #CRON=1:若没有任何错误时,不输出所有备份进度
2、恢复(先清空当前所有的数据,再根据备份数据进行恢复)
1、停止数据库连接 # gitlab-ctl stop unicorn # gitlab-ctl stop sidekiq 2、确认状态 # gitlab-ctl status 3、恢复 # gitlab-rake gitlab:backup:restore backup=1525801521_gitlab_backup.tar 4、启动服务 # gitlab-ctl start
5、检查是否恢复成功
# gitlab-rake gitlab:check SANITIZE=true