Git


一、介绍

代码上线流程图

 运维工程师三大核心职能

 

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                  #工作目录的文件提交到暂存区域 
      git add .或*                  #工作目录所有的文件提交到暂存区域
(降)git checkout             #从暂存区域撤回到工作目录

暂存区域  
(升)git commit -m "备注"            #暂存区域的文件提交到本地(远程)仓库,不加-m,需要手动添加  
(降)git reset HEAD            #从暂存区域撤回到工作目录(在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

                

                    

     

Git