Git学习笔记
前言
集中式版本控制系统(比如CVS,SVN或者Subversion等)的布局是有一个中央服务器, 每个开发者在他个人电脑上有一个包含项目文件的工作目录,也就是工作区. 开发者本地工作区的修改需要提交给中央服务器, 一般提交之前需要从中央服务器上或者最新代码. 中央服务器存储着文件的当前和历史版本信息. 集中式版本控制系统比较明显的缺点是中央服务器一旦故障,整个项目就跪了,这一点明显区别与分布式版本控制系统. 其次集中式版本控制系统是需要联网使用的.
对于分布式版本控制系统, 开发者环境和中央服务器环境没有绝对的界限. 他们之间地位是相等的, 因为任何一个开发者都拥有一个用于当前文件操作的开发区和用于存储项目所有版本,分支以及标签的本地版本库(也称为克隆). 通过push和pull命令,我们可以将修改从一个版本库传送到另一个版本库. 由此可知, 分布式版本控制系统的高可用和强大的数据备份就体现在开发过程中任一开发者环境版本库故障了,只需要从其他版本库克隆一份就可以了. 开发者的开发工作可直接在本地进行,无需网络, 这一工作方式有效提升了分布式版本控制系统的高性能(无网络延迟), 若需要传送到中央服务器或者其他开发版本库时才需要网络. 此外, 这样的模式同时也方便了维护人员, 比如一些重构工作,我们就可以直接克隆一个版本库副本出来用于尝试,避免对原始版本库造成影响.
分布式版本控制系统的一些称谓解释:
项目版本库: 主要用于存储’官方’创建并发行的版本
共享版本库: 主要用于开发团队内成员之间的文件交换
工作流版本库: 用于填充那些代表工作流中某种特定进展状态的修改,比如审核通过的状态等
派生版本库: 主要用于从开发主线分离出某部分内容,或者隔离出可能永远不会被包含在主线中的,用于实验的那部分开发进展
版本库本质上是一个高效的数据存储结构, 它包括以下三部分:
文件(blob): 包括文本也包括二进制数据,这些数据不以文件名形式保存
目录(Tree): 目录中保存的是与文件名相关联的内容,也会把偶偶其他目录
版本(commit): 每一个版本所定义的都是相应目录的某个可恢复的状态.
对于所有的数据, 它们会被计算成一个16进制散列值, 这个值就作为相关对象的引用以及日后恢复数据时需要的键值
Git基本操作
git 安装
Git官方下载地址: http://git-scm.com/download
系统环境: centos7
安装git
$ yum install -y git
查看git版本
$ git --version
配置用户和邮箱(需要进入工作目录)
$ git config --global user.name “your name”
$ git config --global user.email “your em