git
:分布式 —没有中心代码库,所有机器之间的地位同等(每台机器上都有相同的代码)
svn
:集中管理的 —有中心代码库,其他都是客户端
#git与svn介绍
###1. git 属于分布式版本控制系统
客户端并不只提取最新版本的文件,而是把原始的代码仓库完整地克隆下来。
优点:
a. 由于任何人每次提取操作,实际上都是一次对代码仓库的完整备份,因此近乎所有的操作都可以在本地执行,速度就是相当的快,并且可以在网络断开的时候操作仍然不受影响,可以频繁的进行提交更新,等到有网络的时候再上传到远程的仓库就可以了。
b. git的分支模型,相当的轻量级,被称为“必杀技”。缺点:
a. 每个开发人员都拥有所有的代码,不利于核心代码的保密(如果有重要代码需要保密,则不建议使用git)
###2. svn属于集中化的版本控制系统:
有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的成员通过客户端连接到这台服务器,进行文件上传和更新。
优点:
a. 使用简单,比较符合我们的常规思维
b. 同步代码比较简单,只要一步操作即可。缺点:
a. 丢失数据的风险:最显而易见的,由于集中化的特点,如果版本库的服务器磁盘发生故障等,你不能保证所有的数据已经有人提取出来了,最坏的情况是彻底的丢失整个项目的所有历史更改记录。
b. 网络中断的情况下,协作就无法进行了,因为无法连接服务器进行上传和更新。
#git 相关概念—纯命令行
工作区
版本库
暂存区
HEAD
版本号
版本日志
- 工作区(Working Directory):
存放git版本仓库的目录就是工作区(放源代码的地方)- 暂存区:
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,(会将代码添加到缓存区,没有问题之后在提交到版本库)- 版本库(Repository):
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。- HEAD:
指向你最近一次提交后的结果。(现在是哪个版本,头就会指向这个版本)
添加文件到暂存区:
创建两个文件add到stage:
#git add 文件名
#或者
#git add *
从暂存区(stage)提交到当前master分支的HEAD:
git commit -m “版本描述信息” #提交暂存区里的修改到版本库的分支
版本号:最核心用的是id号。每个版本都会有一个id号,也就是commit id,
查看版本号:
版本号可以通过版本日志查看
commit完成的功能类似快照,可以使用git log查看每次的commit记录
[root@vm20 gittest]# git log
commit fbecfa3d04ae5038aa11bf55942e46c840077ace #id号