git  相当于快照  可以实现代码回滚
优点  部署简单  
分布式的操作系统
系统环境准备
#cat  /etc/redhat-release
#uname  -r
#getenforce
#systemctl  stop  firewalld
#rmp  -qa git
#yum  install   -y  git
使用用户
# git config --global user.name 'jackie'
#git config --global user.email '985848343@qq.com'
# git config --global color.ui true  语法高亮
隐藏文件
# cat .gitconfig      查看那个人在使用仓库
# mkdir  jackie
# init                         初始化
#git init                    git初始化 
#ll  -a                        查看初始化仓库
#git status               查看仓库状态
#git diff                    查看工作区和暂存区的
#git diff --cached   查看暂存区和仓库
#git  rm  cached c  从暂存区撤回来
#rm  -f     c               直接删除文件
#git  branch testing  创建分支
#git  branch  -D  testing  删除分支
#git  commit  -am "modified  aaa  add  master"     添加修改的文件到仓库
#git  checkout  texting    切换分支
#git   merge  testing       合并分支
#git  commit  -am  "merge  testing"  启动合并分支
#git  tag   -a  v2.0  回滚值   -m "tag  v2.0  回滚值添加的内容"  设置版本号
#git tag              查询版本号
#git  tag  -d  1.0    删除版本号
#git  reset  --hard    v2.0/回滚值     版本回滚
#git     reflog             查看回滚值
git常用的基础命令
[root@centos7.7 data]# touch a b c
创建工作文件
[root@centos7.7 data]# git add a
把a文件添加到暂存区
[root@centos7.7 data]#  git add .
把所有的文件添加到暂存区
[root@centos7.7 data]# git rm --cached c
从暂存区撤回来  c
[root@centos7.7 data]# rm -rf c      
彻底删除 c
[root@centos7.7 data]# git rm -f b
直接同暂存区同工作区一起删除b
[root@centos7.7 data]# git commit -m "add newfile a"
添加新文件a到本地仓库
[root@centos7.7 data]# mv a a.txt
工作区里改了a的名字
git rm --cached a
工作区同暂存区一同删除a,还未删干净
[root@centos7.7 data]# git add a.txt
把a.txt添加到暂存区
[root@centos7.7 data]#  git commit -m "modifiled a a.txt"
添加a.txt到本地仓库
 git mv a.txt a     直接从暂存区和工作区一同改名为a
[root@centos7.7 data]# git commit -m "mv a.txt a"
直接添加加到本地仓库a
 git diff   比较工作区和暂存区区别
 git  diff    --cached 比较暂存区和仓库区别
[root@centos7.7 data]# echo index > a
在工作目录增加index
[root@centos7.7 data]# cat a   
[root@centos7.7 data]# git diff   
a的工作区和暂存有差异
[root@centos7.7 data]# git add  a
[root@centos7.7 data]# git diff
a的工作区和暂存区没差异
[root@centos7.7 data]# git commit  -m "add index" 
增加index到本地仓库
 git diff   --cached 对比本地仓库和暂存区没差异
[root@centos7.7 data]# echo 123 >> a
直接追加到工作区a
[root@centos7.7 data]# git commit -am "add 123 >a"
如果a已经被仓库管理,就可以直接用一条命令就可以
 git log --oneline      一行显示commit信息
git代码合并
git log --oneline --decorate   快照回滚的地方,指向最后一个分支
[root@centos7.7 data]# git log -p   
显示详细改动
[root@centos7.7 data]# git log -1 -p
 显示一条内容
[root@centos7.7 data]# git reset --hard  03c1b98    回滚数据到某一个提交
 git reflog  查看历史快照IP
root@centos7.7 data]# git branch testing  新建testing分支
root@centos7.7 data]# git branch       察看*在哪就在那个分支上面
[root@centos7.7 data]# touch aaa  bbb ccc
[root@centos7.7 data]# git add aaa   
把aaa添加到暂存区
[root@centos7.7 data]# git commit -m "add aaa"
[root@centos7.7 data]# git checkout testing  切换到testing分支
[root@centos7.7 data]# git checkout  -b testing   创建并切换到testing分支
[root@centos7.7 data]#  ll        aaa bbb ccc 没有出现
[root@centos7.7 data]# git checkout  master 切换到master分支
[root@centos7.7 data]# git branch -d testing   删除testing分支
[root@centos7.7 data]# git checkout -b testing   创建并切换到testing分支
[root@centos7.7 data]#  ll        aaa bbb ccc 出现
[root@centos7.7 data]# git checkout master  切换到master
[root@centos7.7 data]# touch master-eee   创建master-eee
[root@centos7.7 data]# git add .    添加到暂存区
[root@centos7.7 data]# git commit -m "add newfile master-eee"
[root@centos7.7 data]# git merge testing      合并分支testing到主干master上
[root@centos7.7 data]# git branch -d testing   删除testing
git合并冲突
[root@centos7.7 data]# echo "master" >> aaa    将master 重定向到aaa
[root@centos7.7 data]# git commit  -am  "modifile aaa add master" 
修改的aaa添加到主干master仓库
转到testing支干
[root@centos7.7 data]# git checkout testing
[root@centos7.7 data]# echo "testing" >> aaa     把testing追加到aaa中
[root@centos7.7 data]# git commit -am  "modifile aaa add testing"    
修改的aaa添加到本地testing仓库
转到master主干
[root@centos7.7 data]# git checkout master
[root@centos7.7 data]# git merge testing
合并出现冲突
[root@centos7.7 data]# vim aaa
修改master中aaa文件
[root@centos7.7 data]# git commit -am "merge testing"
交付给本地仓库
git标签使用
[root@centos7.7 data]# git tag -a v1.0 e5f2ac8 -m "tag v1.0 add index"
 创建index版本号
[root@centos7.7 data]# git show v1.0
[root@centos7.7 data]# git reset --hard v1.0  根据版本回滚
[root@centos7.7 data]# git reflog  
察看历史镜像IP
[root@centos7.7 data]# git reset --hard 277db0d     回滚到merge testing
[root@centos7.7 data]# git tag -a "v2.0" -m "xxx"  打标签
[root@centos7.7 data]# git tag -d  "v2.0" -m "xxx"   删除标签
github
最大的代码远程仓库
github 不仅可以托管各种git版本仓库,还有更美观的web界面
[root@centos7.7 data]# git remote add origin https://github.com/jackie
-beep/git-data.git  
添加一个远程仓库origin
[root@centos7.7 data]# git remote
 察看远程仓库名称
[root@centos7.7 data]# git branch -M master
[root@centos7.7 data]# git push -u origin master
做一个免秘钥
~]  ssh-keygen  -t  rsa
~]  cat  .ssh/id_rsa.pub
把公共秘钥复制到   web页面里
ssh keys
推送到远程仓库origin
Username for 'https://github.com': jackie-beep
Password for 'https://jackie-beep@github.com': zhu13277225338
[root@centos7.7 tmp]# git clone git@github.com:jackie-beep/git-data.git
推送完毕
git clone git@10.0.0.134:test/git_data.git
代码克隆到本地仓库
gitlab安装
停止  gitlab-ctl   stop  全部( 单个nginx)
http://about.gitlab.com/install/#centos-7
#首先安装gitlab依赖
yum install curl openssh-server openssh-clients postfix cronie 
policycoreutils-python –y
#启动postfix,并设置为开机启动 
systemctl start postfix
#设置防火墙 
systemctl  restart   firewalld
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
#安装rpm包
rpm -i gitlab-ce-10.0.2-ce.0.el7.x86_64.rpm
#根据提示,继续执行指令配置gitlab。 
gitlab-ctl reconfigure
#修改配置文件gitlab.rb
cd    /etc/gitlab/gitlab.rb
vim  /etc/gitlab/gitlab.rb
将external_url变量的地址修改为gitlab所在centos的ip地址。
(因为我这台centos是16.5,故配成图中的地址)。
10.0.0.134:82
nginx['listen_port']=82
#因为修改了配置文件,故需要重新加载配置内容。
gitlab-ctl reconfigure
gitlab-ctl restart
10.0.0.134:82       访问gitlab  82端口
创建组--> 项目--> 人员
组   test  
new project       test      git--data
#ssh  keys
#ssh-keygen  -t  rsa
#cat  .ssh/id_rsa.pub
把公共秘钥复制到   web页面里ssh  keys
#git   remote     查看远程仓库
#git  remote remove +远程仓库名字移除仓库
#cd  jackie
#git  checkout   testing     转换成测试文件
#git  remote  add  origin   移除原有仓库
#git@10.0.0.134:test/git__data.git   添加一个新的远程仓库
#git  push -u origin testing     推送代码到远程仓库
继续推送文件   touch  test.txt
                             git add  .
                          git  commit  -m  "newfile testtest.txt"
                         git   push -u origin  master
远程仓库增加test.txt文件
增加开发新用户  dev    dev    7777@qq.com
设置密码   12345678
加入组       开发新用户加入  test组
登录开发用户    设置公共秘钥
ssh-keygen  -t  sra
cat  .ssh/id.rsa.pub
git clone git@10.0.0.134:test/git_data.git克隆到本地仓库
     cd  git__data/
-->git__data]#
touch  newfile.txt
git add .
git  commit  -m "newfile" 
git  config --global  uesr.email  "dev@example.com"
git  config --global  uesr.name"dev"
main分支保护
开发端
*testing 
-->data ]#   touch   123.txt
                      git   add  . 
                      git  commit   -m  "newfile  123.txt"
--> data]#     git   push  -u origin dev
git  pull  最新数据同步