git简介,版本控制系统,储存方式
1.版本控制系统
集中式和分布式的区别
集中式版本控制系统(cvs,svn):所有的文件保存在中央服务器上,每个电脑只保存一个副本。
当需要修改文件时,需要先从中央服务器下载最新版本,修改完成之后,再传送给中央服务器
优点:使用简单
缺点:中央服务器单点故障,或者网络有问题;速度慢,网络文件传输较慢
当中央服务器停止,将不能修改代码,不能协同操作,可能会丢失数据。
分布式版本控制系统:会把服务器上的代码仓库完整地镜像下来。镜像就是复刻
先将代码保存在本地,可以不联网,从中央仓库镜像代码,在中央服务器坏掉时,并不影响。因为修改代码在本地进行操作,可以等中央服务器好时,再上传到远程仓库。
优点:可离线,速度快
2.版本存储方式的差别
a.直接记录快照,而不是差异化的比较
这类系统(CVS,Subversion,Perforce,Bazaar 等等)每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容。对版本一进行操作,增加某行,删除某行。再找到版本二,需要一步一步的计算,最终才能获得。
但是git直接快照,每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接。对版本一进行操作增加某行,删除某行。找到版本二的内容,先链接版本一没有改变的部分。版本二,是完整的版本。
b.几乎所有的操作都是本地进行的
cvs和svn需要连网,而git直接本地进行操作
3.Git的安装
直接下一步,下一步……
4.git仓库的基本概念
什么是版本库?版本库又名仓库,英文名repository,你可以简单的理解一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”。
a.远程仓库(Remote):
也叫作资源库,是远程机器上的代码库。如GitHub,GitLab,gitee
b.本地库(Repository)
是用户在本地创建的目录,拥有远程库的一个快照,由工作区和版本库构成。
工作区(Workspace):
本地库的根目录中除.git目录以外的内容,存储内容的实际文件。
暂存区(stage/Index):
也叫做缓存区,暂存信息存放在.git目录"下的index文件(.git/index)中,用于临时保存内容的修改;
版本库(.git目录)
是本地库的根目录中的一个隐藏目录.git,用于记录版本信息,Git进行版本控制(管理文件变化、追溯历史的过程)所需要的文件,则都放在.git文件夹中;
c..分支,合并
本地库默认创建一个主分支,分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。
5.git仓库的常用命令
6.git仓库的工作流程
从一般开发者的角度来看,使用Git的工作流程是:
- 克隆远程库:从远程库上克隆完整的Git仓库(包括代码和版本信息)到本地;
- 在本地库上修改代码:在本地库上根据不同的开发目的,创建分支,修改代码;
- 提交到分支:在本地分支上提交代码;
- 把修改合并到本地主分支:在本地库上提交更新,也就是说,把修改合并到本地主分支;
- 把远程库合并到本地主分支:把远程库上的最新代码fetch下来,跟本地主分支合并,如果存在冲突,那么解决冲突。
- 把本地主分支提交到远程库:生成补丁(patch),把补丁发送给远程库。
7.小知识:集群
(针对项目场景)是 “把一个项目的软件部署到多台服务器上,通过协调工具 / 规则让它们配合工作,最终解决单台服务器‘性能不够、怕故障’问题” 的组合。