automation——01
环境:使用2台虚拟机。develop:192.168.4.10(客户端)与gitlab:192.168.4.20(服务端)。
查看yum仓库情况,最后一行可以看到软件包数量:dnf repolist -v
新版本中yum被dnf替代,yum命令依然可以使用:dnf -y install vim net-tools bash-completion
git 可以作为程序(代码文件)的版本管理工具
1,环境准备
服务端:
[root@gitlab ~]# dnf -y install git //服务端安装git
mkdir /var/lib/git //创建git目录
git init /var/lib/git/project --bare //创建空仓库,用来存储数据
客户端:
[root@develop ~]# yum -y install git //客户端安装git
git clone 192.168.4.20:/var/lib/git/project //从服务端克隆仓库,然后输入yes与服务器密码
2,使用git仓库
[root@develop ~]# cd project/ //进入仓库
[root@develop project]# git remote -v //检查仓库与远程git服务器地址
git config --global user.name “abc” //定义客户端用户名
** git config --global user.email “abc@abc.com”** //定义客户端邮箱
cat ~/.gitconfig //查看
echo “abc001” > 001.txt //创建文件
git status //查看仓库状态,可以显示仓库文件被修改或者新创建的信息
git add . //把新增的、修改的都加到缓存
git add -A #把新增、和修改的、和删除的都加到缓存
git commit -m “001” //提交到本地仓库 -m后面是注释
git push //将本地git仓库数据推送到远程git服务器
3.查询
[root@develop project]# git log //查询日志,可以看到本地仓库中提交的注释记录
echo “002” > 002.txt //在仓库中继续创建文件
git status //查询状态
git add . //提交到暂存区
git commit -m “002” //提交到本地仓库
git push (上传) //提交到远程仓库
git log //再查日志
git log //查看完整日志
git log --pretty=oneline //查看精简日志
git log --oneline //查看更精简日志
git reflog //查看本机操作日志
[root@develop project]# git pull (拉取)
二,HEAD指针,可以将数据恢复到过去的状态(类似虚拟机的快照)
当前HEAD指针为HEAD@{0}
git reflog //首先查询日志可以看到第1列的随机字符串,该字符串定义了每次commit提交的数据状态
git log --oneline //也可以看到,比如显示信息是:
24d2e94 (HEAD -> master, origin/master) 003+
21b6a87 003
54fba4f 002 002-1
864774f 001
git reset --hard 24d2e //回到时间节点为21b6a数据状态(相当于回到以前)
情景:创建文件 A ,写了一些代码,然后git add .与git commit。再修改A ,继续git add .与git commit ,再创建B文件,然后
再git add .再git commit ,此时发现需要最初的A的数据,就需要回到过去挽救这个文件,同时为了避免回到过去丢失B文件,按照以下方式进行,回复到过去的时间节点,找回数据思路:
1,git reflog 查看日志,找到旧数据所在时间节点
2,git reset xxxx --hard 回到过去,xxxx是时间节点的记录
3,把需要找回的数据,从仓库中拷贝到另外一个目录
4,git reset xxxx --hard 回到现在
5,在之前的目录找回旧数据
三,git分支
当项目内容比较多时,可以在git中使用分支,不同分支的文件可以互不
干扰而不用创建多个仓库
git branch //查看分支
git branch hotfix //创建名叫hotfix的分支,名称可以自定义
git checkout hotfix //切换分支
echo “hotfix-001” > hotfix001.txt //创建属于hotfix分支的文件
git add . //提交到暂存区
git commit -m “hotfix001” //提交到本地仓库
git checkout master //切换回默认分支
echo master > master.txt
git add .
git commit -m “master”
git checkout master //切换回默认分支
git merge hotfix //将hotfix分支与master分支合并,然后进入到文本编辑器中写注释,可以输入一些合并原因,保存退出
ls //查看当前分支,可以看到拥有两个分支的文件
分支中的特殊情况:
如果分别在不同分支,创建同名文件,内容不同,再进行合并时,会发生冲突,此时需要手工修改冲突文件,修改完之后就可以解决冲突
echo abc > abc.txt //在master分支继续创建文件
git add .
git commit -m “abc”
git checkout hotfix //切换到hotfix的分支
echo xyz > abc.txt //在hotfix分支继续创建文件
git add .
git commit -m “abc”
git checkout master //切换到master的分支
git merge hotfix //再次合并分支,失败
vim abc.txt //编写文件,由人来决定最终合并内容保存退出即可解决冲突
git add .
git commit -m “abc+” //提交,完成合并
四,git使用方式
git可以使用多种方式建立客户机与服务器间的连接,这里先介绍第一种:使用ssh协议建立连接,实现免密通信
ssh-keygen //交互式创建ssh秘钥
ssh-keygen -f /root/.ssh/id_rsa -N ‘’ //非交互式创建ssh秘钥
ssh-copy-id 192.168.4.20 //传递秘钥到4.20
cd ~
rm -rf project //删除仓库
git clone 192.168.4.20:/var/lib/git/project //重新克隆
echo abc > abc.txt //创建测试文件
git add .
git commit -m “abc”
git push //提交到服务器可以免密码
后续课程需要的软件:
gitlab_zh.tar
jenkins_plugins.tar.gz
jenkins-2.263.1-1.1.noarch.rpm
另外要把192.168.4.30 准备好
关于git,这是比较高水平的讲解:https://www.cnblogs.com/wbl001/p/11495110.html。可以参考更详细的内容