前言:在开发过程中每天都会写很多代码,并且在他们代码中会有一些版本相当于迭代,由于每天都要写很多其他东西,就会有很多版本产生然后就需要一个版本控制的系统来做项目管理,比如说微信的11版本12版本,我举个例子或者说在我们的代码开发过程中会有几个组去开发微信,可能一个组开发视频功能另一个组开发支付功能,他们同时为微信一个应用做了大的好多开发一个并行的线路,也是需要一个版本管理工具来进行管理的(分支)。
1.版本控制系统
1.版本控制系统其实就是一个控制文件版本的系统。
.版本仓库是控制版本的核心,任意客户端都可以链接使用版本仓库。
结构如下图。
其实这个和我们配置yum仓库的时候差不多。
2.主流的版本控制系统。
其实目前的主流版本有两中,一种是集中式版本控制系统,另一种是分布式版本控制系统,我来说一下两者的差别吧。
1.集中版本控制系统
.所有客户端都共享一个仓库。
.所有操作都要进行联网操作。
.代表的软件有subversion
服务器记录所有版本,但是客户端只有最新版!
缺点也很明显、
1,集中版本控制系统只能保存最新的,比如说我第一台客户端下载A1版本之后修改成A2然后提交(服务器)- - 断网 - -,然后第二个客户端下载A2进行修改,修改完成提交数据(覆盖并保存旧数据) A3 - - 断网- - ,那么第三个下载A3进行修改,提交数据(覆盖A3)结果出现修改错误无法恢复之前的数据。
2.分布式版本控制系统
.只是断网操作
.每一个客户端都能克隆一个完整的仓库。
.代表软件git
服务器记录所有版本,客户端也有所有版本,具有本地仓库功能,支持断网。
分布式优点,
客户端1号把服务器上的A1下载到本地仓库,客户端修改A1->A2 提交远程服务器 - -断网 - -
客户端2号修改A2->A3 (提交本地仓库)。
客户端3号修改A3->A4(提交本地仓库)如果三号修改完发现有问题可以进行修复。
、那么显然集中版本控制器 对比 分布式版控制器 ,(缺点就是断网)断网不能操作,客户端只能看到最新的,分布式优点(断网可以操作,可以从服务端克隆到本地仓库)。
2.GIT的工作流程
1.仓库区 保存所有数据的地方
2.工作区 实时编辑的区域
3.缓存区 就是一个文件保存下次将提交的文件列表信息
3.怎么用GIT
1.搭建服务端分布式仓库
1.首先大家先在var目录下创建一个git目录
mkdir /var/git
2.git 初始化指定刚刚创建的目录,在目录里面创建一个project 这样我们的服务端GIT仓库就创建好了下面就是模拟客户端来进行版本模拟。
git init /var/git/project --bare
3.以上步骤效果显示
2.如何使用分布式仓库
1.我用另外一台服务器来 进行客户端模拟
1,首先我用主机名为A1的客户端进行克隆到本地。
git clone root@192.168.4.20:/var/git/project 克隆gitserver的仓库
2.我们可以看到我已经把4.20结尾的仓库克隆到本地了,这个就是本地仓库支持断网进行操作。
3.我来写一个文件把他上传到暂存区,然后再上传到到我们的本地仓库和服务器上
cd project 进入到本地仓库
echo "init data" >a.txt 创建一个文档
git add . 上传到暂存区
git commit -m "备注" 上传到本地仓库
git pull 上传到服务器
大家可以看到已经上传成功,工作流程大家可以看上面的表格 先clone 克隆仓库 进入仓库,上传缓存区,上传本地仓库,上传至服务器。
3,那么我给大家演示多次生产数据产生信息怎么切换版本。
大家可以看到我上面生成了很多版本。
git reflohg 带指针来查看日志 (啥是指针,指针就是指定的版本号)
git reset --hard 后面写上凭证上面那副图看我标记
大家可以看到版本切换成功。
4.什么是GIT支分
1.可以让你的开发分多条主线同时进行每个主线互不影响
2.可以按功能模块分区,也可按照坂本进项分区
3.可以合并分区
他也有规范我就不写了给你们找个图 盗个图
是什么意思呢我给你画个图
同时开发多个功能。
下面来操作一下
git status 查看当前分区
git checkout -v 查看所有分支
git branch hotfix #创建分支hotfix
git branch feature #创建分支feature
git checkout hotfix #切换hotfix分支
合并分区
可以看到我创建了两个分支,下面我都写上内容然后合并。
git checkout hotfix 切换到这个支分
echo "fix a bug" >> new.txt 写内容到文件
git add . 上传到缓存
git tommit -m "fix a bug" 上传到本机仓库
git checkout master 切换主分
cat new.txt /master分支中没有hotfix分支中的数据
git merge hotfix #合并分支
5.解决支分的冲突、
出现这种情况有我们就要冲动配置一下文件了,可能开两个内容不一样我们把第二个内容全删掉, 保持一致性。
可以看到支分内容不一样,一个是AAA,另一个是BBB所以合并会导致冲突,解决办法就是保持一执。
把AAA删掉就好了 。