• Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
• Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
• Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,
不必服务器端软件支持。
推荐:《pro git》https://down.51cto.com/data/273438
[root@node1 ~]# yum -y install git //安装
[root@node1 ~]# git config --global user.name "Mr.LXH" //设置用户名
[root@node1 ~]# git config --global user.email "[email protected]" //设置用户email
[root@node1 ~]# git config --global core.editor vim //设置默认编辑器为vim
查看配置信息:
2.git的应用流程
2.1.创建版本库
• Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init是使用 Git
的第一个命令。
方法一:还没有项目前
[root@node1]# git init myself
初始化空的 Git 版本库于 /root/nsd2019/myself/.git/
[root@node1]# ls -A myself/
.git
方法二:已有项目目录
2.2.添加文件到暂存区
工作区、暂存区和版本库 (git重要工作区域)
• 工作区:就是你在电脑里能看到的目录 (编写代码的项目目录)
• 暂存区:英文叫stage, 或index。一般存放在 “.git目录下” 下的index文件(.git/index)中,所以我们把暂存区有时也
叫作索引(index) (工作区与版本库之间的缓冲地带)
• 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库(在工作区中有一个名为.git的目录,他是保
存文件的目录)
[root@node1 self1]# git status //查看状态
[root@node1 self1]# git status -s
?? index.html
]# git add index.html //提交到暂存区
]# git status
]# git status -s
A index.html
2.3提交文件到版本库
[root@node1 self1]# git commit -m "add new file index.html"
]# git status
2.4将文件从暂存区撤出
[root@node1 self1]# cp /etc/hosts .
[root@node1 self1]# git add .
[root@node1 self1]# git status
[root@node1 self1]# git reset HEAD hosts
[root@node1 self1]# git status
2.5删除文件
提交文件
[root@node1 self1]# git status -s
?? hosts
[root@node1 self1]# git add . //将尚未提交到版本库的文件提交
[root@node1 self1]# git status -s
A hosts
[root@node1 self1]# git commit -m " add hosts" //提交
删除hosts文件
[root@node1 self1]# rm -f hosts
[root@node1 self1]# git status
[root@node1 self1]# git rm hosts
rm 'hosts'
[root@node1 self1]# git status
[root@node1 self1]# git status -s
D hosts
[root@node1 self1]# git commit -m "delete hosts" //彻底删除
[root@node1 self1]# git rm index.html
[root@node1 self1]# git status
[root@node1 self1]# git reset HEAD index.html
[root@node1 self1]# git status
[root@node1 self1]# git checkout -- index.html
[root@node1 self1]# ls
[root@node1 self1]# git status
[root@node1 self1]# mkdir abc
[root@node1 self1]# cp /etc/passwd .
[root@node1 self1]# cp /etc/shadow .
shadow shadow- shells
提交文件到版本库
[root@node1 self1]# git add .
[root@node1 self1]# git commit -m "add new files"
[root@node1 self1]# git status
[root@node1 self]# git commit -m "mv passwd -> abc/mima"
[root@node1 self]# git status
[root@node1 self1]# cp shadow abc
[root@node1 self1]# ls
abc index.html shadow
[root@node1 self1]# git status
[root@node1 self1]# git add .
[root@node1 self1]# git status
[root@node1 self1]# git commit -m "cp shadow abc/"
2.7 分支管理
git默认有一个名为master的分支
git默认情况下,名为HEAD的指针指向master返回到之前的某一次commit:
[root@node1 self1]# git log
[root@node1 self1]# git status
[root@node1 self1]# git checkout 5acd40b9bf4506f2f97500d62497e6f67088b35b
[root@node1 self1]# ls
hosts index.html
[root@node1 self1]# git checkout master
[root@node1 self1]# ls
abc index.html shadow
[root@node1 self1]# git branch b1
[root@node1 self1]# git branch
b1
* master
[root@node1 self]# ls
abc index.html shadow
在b1分支中,新建文件
[root@node1 self]# echo 'hello world' > hello.txt
[root@node1 self]# ls
abc hello.txt index.html shadow
[root@node1 self]# git add .
[root@node1 self]# git commit -m "add hello.txt"
当b1中的代码已经完成了,就可以将分支汇入主干切换到master分支,并汇入
[root@node1 self]# git checkout master
切换到分支 'master'
[root@node1 self]# ls
abc index.html redhat-release shadow
[root@node1 self]# git merge b1
[root@node1 self]# ls
abc hello.txt index.html redhat-release shadow
删除分支
[root@node1 self]# git branch -d b1
已删除分支 b1(曾为 8853c68)。
[root@node1 slef]# git branch
* master
使用远程服务器
准备一台虚拟机192.168.1.12
内存4G以上
安装docker
把gitlab_zh.tar包拷贝到虚拟机
[root@room9pc01 ~]# scp -r /linux-soft/04/docker/ 192.168.1.12:/root/docker
[root@room9pc01~]# scp /linux-soft/05/gitlab_zh.tar 192.168.1.12:/root/docker
[root@room9pc01 ~]# mkdir /var/ftp/rhelosp
[root@room9pc01 ~]# ls /linux-soft/04/openstack/
]# mount /linux-soft/04/openstack/RHEL7-extras.iso /var/ftp/rhelosp/
]# vim /etc/fstab
1.1配置docker
安装
[root@room9pc01 ~]# virsh edit node2 //修改虚拟机的xml
4488282
4488282
[root@room9pc01 ~]# virsh destroy node2
[root@room9pc01 ~]# virsh start node2 //重新启动虚拟机
[root@room9pc01 ~]# ssh 192.168.1.12
[root@node2 ~]# free -h //查看内存
[root@node2 ~]# vim /etc/yum.repos.d/local.repo
[docker]
name=docker
baseurl="ftp://192.168.1.254/rhelosp"
enabled=1
gpgcheck=0
[root@node2 ~]# yum -y install docker //安装docker
[root@node2 ~]# systemctl restart docker
[root@node2 ~]# systemctl enable docker
[root@node2 ~]# docker images
[root@node2 ~]# ls -ll docker/
[root@node2 ~]# for i in docker/*.tar //把镜像导入docker容器内
> do
> docker load -i ${i}
> done
导入gitlab镜像
[root@node2 ~]# docker load < gitlad_zh.tar
修改虚拟机ssh端口为2022,因为22端口需要留给容器用
[root@node2 ~]# vim /etc/ssh/sshd_config
Port 2022
[root@node2 ~]# systemctl restart sshd
1.2重新使用2022端口远程连接服务器
[root@room9pc01 ~]# ssh -p2022 192.168.1.12
启动容器
[root@node2 ~]# docker run -d -h gitlab --name gitlab -p 443:443 -p 80:80 -p 22:22 --restart always -v /srv/gitlab/config:/etc/gitlab -v /srv/gitlab/logs:/var/log/gitlab -v /srv/gitlab/data:/var/opt/gitlab gitlab_zh:latest
b0fe8f743eb1bf21021a43407c7da71e808f1aef498aa040fa577e14c7365b3c
[root@node2 ~]# docker ps //当状态中,显示healthy时,容器才能正常使用
[root@node2 ~]# firefox http://192.168.1.12/
1.3初始化gitlab服务器
• 密码需大于8位
• 默认用户名为root
1.4添加gitlab项目
1.4.1
创建名为devops的组,组类型为公开
创建名为pro2的项目,属于devops组,类型为公开
创建用户时,创建用户时,不能为用户指定密码,但是能修改用户资料时,可以设置密码.
授权,授权新建的用户是pro2项目的主程序员
创建群组
创建项目
创建用户
• 创建用户后,再次编辑可设置密码
• root用户将新用户加入组中,并设置新用户为“主程序员”
• 新用户初次登陆,需设置自己的密码
用户管理
新用户不用配置任何选项,已经可以通过http协议进行代码的上传。但是,通过http上传代码,每次执行操作时,都需要填写用户名、密码
1.5配置ssh免密上传代码
• 将本地生成的公钥上传至服务器
生成ssh密钥
[root@node1 self1]# ssh-keygen -t rsa -C "[email protected]" -b 4096
点击右上角用户“设置”
点击左侧工具栏的“ssh密钥”,将公钥拷贝到“密钥”文本框中
[root@node1 self1]# cat ~/.ssh/id_rsa.pub
[root@room9pc01 nsd2019]# ssh 192.168.1.11
t@node1 self1]# cd ~/self1/
[root@node1 self1]# git remote rename origin old-origin
[root@node1 self1]# git remote add origin [email protected]:root/pro2.git
[root@node1 self1]# git push -u origin --all
1.7后续上传代码的过程
[root@node1 self1]# cp /etc/bashrc .
[root@node1 self1]# git status
[root@node1 self1]# git add .
[root@node1 self1]# git status
[root@node1 self1]# git commit -m "add bashrc" //提交代码
[root@node1 self1]# git push //上传代码
1.8其他用户下载代码:
协议应该使用http
第一次下载的时候,用git clone
后续如果有更新,只要git pull即可
[root@room9pc01 nsd2019]# ssh 192.168.1.13
[root@node3 ~]# cd /tmp/
[root@node3 tmp]# git clone http://192.168.1.12:root/pro2.git
[root@node3 tmp]# cd pro2/
[root@node3 pro2]# ls
abc bashrc hello.txt index.html redhat-release shadow
总结:
使用git时,如果不希望把某些文件,目录保存到到版本库,可以在项目目录下
创建一个名为.gitignore的文件,再把需要忽略的文件写进去。
```shell
[root@node5 pro2]# vim .gitignore
*.doc
*.docx
```