目录
Git的简单介绍
版本控制概念
正如文章标题所写,git是一个分布式版本控制工具。
什么是版本控制呢?
下面给出一个场景:老板让你写一个方案,你写好了之后自信满满的交给了老板,我们管这个版本的方案叫初版。但是老板觉得有点小瑕疵,让你改改。你只得按老板的要求在原方案基础上做了一些改动,然后又将改后的第二版交给了老板。但老板还觉得不够完美,让你再改改。于是,你就又将第二版改了一下,将改后的第三版交给了老板。老板看后,若有所思,不知是良心发现还是突然顿悟了你第一版的精妙之处,对你说:我还是觉得第一版好。此时,你也许已经把第一版是什么样子忘得一干二净了...
这虽然是个搞笑段子,但艺术来源于生活。。。其实最大的问题就是不能回溯到之前的版本,而版本控制工具就是解决这个问题的,它帮我们管理了各个版本的方案/项目,从而使我们可以回溯到之前的版本,这是非常重要的。
目前主流的版本控制器有:
- Git
- SVN
- CVS
- ... 等等,如今有非常多的版本控制工具,但最为主流的是Git和SVN。上面说到了Git是分布式版本控制工具,而SVN是集中式的版本控制工具。下面会简单介绍几类常用的版本控制方式。
版本控制分类
1.本地版本控制
记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人用,如RCS。
2.集中版本控制
所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改。
所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看 不到历史版本,也无法切换版本验证问题,或在不同分支工作。而且,所有数据都保存在单一的服务器 上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。代表产品: SVN、CVS、VSS。
3.分布式版本控制
所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地 提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数 据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。
Git基本理论
工作区域
Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository 或Git Directory、即本地仓库)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四 个区域之间的转换关系如下:
- Workspace:工作区,就是你平时存放项目代码的地方
- Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列 表信息
- Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数 据。其中HEAD指向最新放入仓库的版本
- Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据 交换
Git其实可以看作是一个管理的服务,每一个文件夹就是一个Git服务所管理的范围,.git文件夹存储了管理当前文件夹内文件的信息:
- Directory:使用Git管理的一个目录,也就是一个仓库,包含我们的工作空间和Git的管理空间。
- WorkSpace:需要通过Git进行版本控制的目录和文件,这些目录和文件组成了工作空间。
- Index/Stage:暂存区,或者叫待提交更新区,在提交进入repo之前,我们可以把所有的更新放在 暂存区。
- Local Repo:本地仓库,一个存放在本地的版本库。
- Stash:隐藏,是一个工作状态保存栈,用于保存/恢复WorkSpace中的临时状态。
git的工作流程一般是这样的:
1、在工作目录中添加、修改文件;
2、将需要进行版本管理的文件放入暂存区域;
3、将暂存区域的文件提交到git仓库。 因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)
Git的下载、安装、配置
下载
打开 [git官网] https://git-scm.com/,下载git对应操作系统的版本。
官网下载太慢,我们可以使用淘宝镜像下载:http://npm.taobao.org/mirrors/git-for-windows/
无脑安装
git配置及其常用命令,参考该网址:Git 大全 - Gitee.com