Git系列博客——(1)初识git
2014-11-30 22:04
183 查看
相信大家已经了解版本控制的相关知识了,如果不了解版本控制的读者,可以去看下我之前写过的这篇文章浅谈版本控制来了解下相关知识!
ok,下面来进入Git系列博客第一篇——初识git(包括Git的历史以及Git的简单介绍)
Git的历史
Linux内核开源项目有着众多的参与者,绝大多数的linux内核维护工作都华仔提交补丁和保存归档的繁琐的事务上,直到2002年,整个项目组开始使用分布式版本控制系统BitKeeper来管理和维护代码。但到2005年,开发BitKeeper的公司和linux开源社区合作关系结束,于是就收回了免费使用BitKeeper的权利,这就迫使linux开发一套属于自己的版本控制系统来使用,这时,Git诞生了。
浅谈Git
1. Git是一个怎样的系统呢?(关心整体是否变化,Git本地操作执行)
(1)Git和其他的版本控制系统最大的差别在于:Git只关心文件数据的整体是否发生变化,而非其他系统(如cvs,subversion)关心的文件内容的具体差异。
(2)Git不会保存文件数据的前后变化的差异,Git会把变化的文件做快照后,记录在一个微型文件系统中。当每次提交更新时,Git浏览所有的文件的指纹信息并对文件做一快照,之后保存一个指向该快照的索引。(若文件没有变化,Git不会再次保存,只会对上次保存的快照做一连接,目的是提高性能)
(3)Git中,几乎所有的操作都可在本地执行,只需要访问本地的文件和资源,无需联网就可以使用Git操作(但在其他诸如cvs,subversion等版本控制系统的操作均需要连网),由于Git在本地的磁盘上就保存这所有的关于项目的历史更新,因此,Git处理项目的速度相当快。
2. Git的数据完整性
(1)在保存到Git之前,所有的数据都要进行内容的校验和计算,之后将结果作为数据的唯一标识和索引,也就是说,一旦修改文件或者在文件传输时磁盘损坏导致文件数据丢失,Git都能立刻察觉。
(2)Git使用SHA-1算法来计算文件数据的检验和,通过对文件的内容或目录结构从而计算出一个SHA-1哈希值,用此来作为指纹字符串(由40个十六进制字符组成),Git会完全依赖这个指纹字符串,所有保存在Git数据库中的数据都是用此哈希值来做索引的,而不是简单的文件名。
3. Git内部的三种状态
对于任何一个文件,在Git中都有三种状态,分别是:已提交(committed,表示该文件已经被安全的保存在本地数据库),已修改(modified,表示已经修改了该文件,但没有提交保存到数据库),已暂存(staged,表示把已修改的文件放在下次提交时要保存的清单中)。因此,Git管理项目的文件流转的三个工作区为:Git的本地数据目录,工作目录和暂存区。
4. Git的基本工作流程
(1) 在工作目录中修改文件
(2) 对修改的文件做快照,并保存到暂存区
(3) 提交更新,将保存在暂存区的文件快照转存到git目录中
ok,下面来进入Git系列博客第一篇——初识git(包括Git的历史以及Git的简单介绍)
Git的历史
Linux内核开源项目有着众多的参与者,绝大多数的linux内核维护工作都华仔提交补丁和保存归档的繁琐的事务上,直到2002年,整个项目组开始使用分布式版本控制系统BitKeeper来管理和维护代码。但到2005年,开发BitKeeper的公司和linux开源社区合作关系结束,于是就收回了免费使用BitKeeper的权利,这就迫使linux开发一套属于自己的版本控制系统来使用,这时,Git诞生了。
浅谈Git
1. Git是一个怎样的系统呢?(关心整体是否变化,Git本地操作执行)
(1)Git和其他的版本控制系统最大的差别在于:Git只关心文件数据的整体是否发生变化,而非其他系统(如cvs,subversion)关心的文件内容的具体差异。
(2)Git不会保存文件数据的前后变化的差异,Git会把变化的文件做快照后,记录在一个微型文件系统中。当每次提交更新时,Git浏览所有的文件的指纹信息并对文件做一快照,之后保存一个指向该快照的索引。(若文件没有变化,Git不会再次保存,只会对上次保存的快照做一连接,目的是提高性能)
(3)Git中,几乎所有的操作都可在本地执行,只需要访问本地的文件和资源,无需联网就可以使用Git操作(但在其他诸如cvs,subversion等版本控制系统的操作均需要连网),由于Git在本地的磁盘上就保存这所有的关于项目的历史更新,因此,Git处理项目的速度相当快。
2. Git的数据完整性
(1)在保存到Git之前,所有的数据都要进行内容的校验和计算,之后将结果作为数据的唯一标识和索引,也就是说,一旦修改文件或者在文件传输时磁盘损坏导致文件数据丢失,Git都能立刻察觉。
(2)Git使用SHA-1算法来计算文件数据的检验和,通过对文件的内容或目录结构从而计算出一个SHA-1哈希值,用此来作为指纹字符串(由40个十六进制字符组成),Git会完全依赖这个指纹字符串,所有保存在Git数据库中的数据都是用此哈希值来做索引的,而不是简单的文件名。
3. Git内部的三种状态
对于任何一个文件,在Git中都有三种状态,分别是:已提交(committed,表示该文件已经被安全的保存在本地数据库),已修改(modified,表示已经修改了该文件,但没有提交保存到数据库),已暂存(staged,表示把已修改的文件放在下次提交时要保存的清单中)。因此,Git管理项目的文件流转的三个工作区为:Git的本地数据目录,工作目录和暂存区。
4. Git的基本工作流程
(1) 在工作目录中修改文件
(2) 对修改的文件做快照,并保存到暂存区
(3) 提交更新,将保存在暂存区的文件快照转存到git目录中
相关文章推荐
- Git学习系列(一)初识Git
- Git系列博客——(3)git基础
- Git学习系列(一)初识Git
- spark系列博客-(1)初识spark
- Git系列博客——(2)git安装和基本配置
- Git学习系列(一)初识Git
- 前端资源系列-教程&模块化/规范化/工程化/优化&工具/调试&值得关注的博客/Git&面试资源汇总
- Thinking In系列大师Bruce Eckel博客中文版入驻CSDN
- SharePoint 2007 开发系列(13) SharePoint 博客
- 计算机取证系列教程:初识MACtimes 推荐
- 使用VS进行工作流开发系列博客4-Developing Workflows in VS: Part 3 - Five Steps for Developing Your Workflow
- 使用VS进行工作流开发系列博客8-Developing Workflows in VS: Part 7 - Summary and Final Thoughts
- Thinking In系列大师Bruce Eckel博客中文版入驻CSDN
- 使用VS进行工作流开发系列博客5-Developing Workflows in VS: Part 4 - Design and Bind Your Forms
- 一步一步学Silverlight 2系列-NEt专家博客!
- 使用VS进行工作流开发系列博客1-"So You Want to Develop Custom Workflows in Visual Studio..." - The Blog Series
- 使用VS进行工作流开发系列博客3-Developing Workflows in VS: Part 2 - Planning Your Workflow: Two Things to Keep in Mind
- [导入]Web Client Software Factory系列(1):初识与预备知识
- Thinking In系列大师Bruce Eckel博客中文版入驻CSDN