GIT
git:自动备份的服务器(版本控制软件) 作者:linus
原理:服务器(共享一个目录)作为版本库(版本控制的核心),客户连上服务器后,上传文档,git服务器会自动标记文档版本号.每次上传会更新版本号
特点:
支持任意数量的客户端
客户端可以通过写数据库分享代码(支持多人协作)
集中式:<服务器> 开发者之间公用一个仓库 所有操作需要联网
所有版本 每次下载都下载最新版本 断开服务器连接就不能再进行修改了,否则有可能造成数据丢失
分布式:<每个开发者都是一个仓库的完整克隆,每个人都是服务器> 支持断网操作
客户端有服务端的所有的版本 连接服务后会自动上传本机的所有版本
远程服务端(1.clone数据到本地 4.push提交远程服务)
^ |
| v 3.commit提交git仓库
git仓库 <------------------------------------
| |
v 2.修改后add提交暂存区 |
工作区 ----------------------------------->暂存区
git服务器部署
web1:
yum -y install git #yum安装git软件
mkdir /var/git #创建共享目录(仓库)存放点
git init /var/git/project --bare #初始化一个空的仓库
web2:
yum -y install git
git clone root@192.168.2.100:/var/git/project #克隆git仓库至本地
ls -a project #缓存区,下面有个.git目录存放之前的版本
echo "init date" > init.txt
mkdir demo
cp /etc/hosts demo
git status
git add .
git commit -m "注释,可以为任意字符"
#此时会报错需要表明身份,并显示身份配置的指令
git config --global user.name "Your Name"
git config --global user.email you@example.com
设置完毕后,您可以用下面的命令来修正本次提交所使用的用户身份:
#配置完成后再将暂存区修改提交到本地仓库。
git commit -m "注释,可以为任意字符"
git status
#将本地仓库中的数据推送到远程服务器
git config --global push.default simple
git push #推送上传,只需要记住这个指令,上述指令若没输,输入后会报错并提示你输入上面的命令
git pull #回拉下载
git log #查看版本日志 --pretty=online 一行显示 --oneline 更加缩减版的日志
git reflog #也是日志 (带HEAD指针列表的日志:会显示当前HAED指针的位置)
ps:客户端也可以使用图形程序访问服务器。
Windows需要安装git和tortoiseGit。
还原至指定版本,HEAD指针(HEAD指针是一个可以在任何分支和版本移动的指针,通过移动指针我们可以将数据还原至任何版本。每做一次提交操作都会导致git更新一个版本,HEAD指针也跟着自动移动)
操作步骤:
git reflog #查看指针列表和当前位置
git reset --hard 想要恢复位置的HEAD前面的那串数字 #恢复到那个位置
PS:最终指针要移回来,否则无法push
Git分支操作
查看并创建分支
git status
git branch -v
创建分支
git branch hotfix
切换与合并分支
git checkout hotfix #切换分支
git merge hotfix #合并分支
PS:合并前必须要先切换到master分支,然后再执行merge命令。
ssh-keygen -f /root/.ssh/id_rsa -N '' #生成秘钥
ssh-copy-id 192.168.2.100 #传秘钥(免密传输)
RPM包制作
#源码编译包----->RPM包
原理:
yum -y install 依赖包
tar -xf nginx-…tar.gz
cd nginx-…
./configure
make && make install
/usr/local/nginx---->打包 nginx.rpm
实现过程:
使用工具:rpm-build
#通过以下命令生成~/rpmbuild目录,会报错,正常现象
rpmbuild -ba xxx.spec
错误:stat /root/xxx.spec 失败:没有那个文件或目录
ls ~/rpmbuild
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
RPMS:生成的结果的目录
SOURCES:源码包存放位置
SPECS:配置文件目录
vim /root/rpmbuild/SPECS/nginx.spec
#必须以.spec结尾,完事后会自动生成一个基本的配置表,接下来填空就好了.
Name:nginx #源码包软件名称
Version:1.12.2 #源码包软件的版本号
Release: 10 #制作的RPM包版本号
Summary: Nginx is a web server software. #RPM软件的概述
License:GPL #软件的协议
URL: www.test.com #网址
Source0:nginx-1.12.2.tar.gz #源码包文件的全称
#BuildRequires: #制作RPM时的依赖关系
#Requires: #安装RPM时的依赖关系
%description
more module you want, please install the raw package! #软件的详细描述
%post
useradd -s /sbin/nologin nginx #非必需操作:安装后脚本(创建账户)
%prep
%setup -q #自动解压源码包,并cd进入目录
%build
./configure
make %{?_smp_mflags}
%install
make install DESTDIR=%{buildroot}
%files
%doc
/usr/local/nginx/* #对哪些文件与目录打包
%changelog
#再次打包
[root@web1 SPECS]# rpmbuild -ba nginx.spec
#附加内容
yum grouplist #查看组包
yum -y groupinstall "组包名" #安装组包