标签:android style class blog code http
这次开发要使用Git代替SVN,借机学习了一二,跟大家分享一下。一句话总结的说,Git是一个开源的分布式版本控制系统,由Linux内核开发人员开发,现已用来管理android等多个大型项目。
设计目标:
24b9da6552252987aa493b52f8696cd6d3b00373
4. tag: tag指向一个特定的commit,它像分支引用,但不会变化
这几种对象的关系如下图所示:
通过这几种对象,Git可以很有条理的管理内容和版本。
这样做的好处是可以很大程度上节省硬盘空间,但如果要得到指定版本的文件都要先找到最近的快照,然后合并上改变的部分,所以速度较慢,来看一下Git的存储机制:
Git的存储机制是如果文件有变化,那么就直接再保存一个该文件完整的版本,这种做法的不足之处也显而易见,就是需要更多的硬盘空间;但是好处也很明显:得到指定版本是瞬时的,并且这种机制对于分支、合并的管理非常易操作。
这是一种以空间换效率的方式,大智若愚。
在Git中分支和合并异常轻量级的,所以Git鼓励开发者多使用分支和合并。分支和合并的使用时Git很重要的一部分,本文仅作简单介绍,抛砖引玉,详见《Pro Git》。
由上面提到的对象机制和存储机制,可以知道在Git中,多次提交commit后,仓库变为:
而分支即是指向这些commit的指针文件,这个文件就是包含对象校验和(就是上面提到40字节的SHA-1子串)的文件,所谓的新建分支仅仅是向一个文件加入41个字节(还有一个自己的换行符),所以在Git中新建分支非常快速并且廉价。
它是将代码存放在中心服务器,可以接受所有开发者代码,这种工作流与SVN时的思想一致,适合较小的项目:
Git支持每个开发人员都有自己的远程库,因此可以让官方有一个主库,每个开发人员有一个远程仓库,开发人员向自己的库中更新内容,官方管理员负责收集、选择、整合这些更新到主库:
GitHub上采用最多的就是这种工作流。
这个是在集成管理员工作流的基础上改进的,一般非常大的项目才会使用,如linux内核开发。这种工作流的核心是在集成管理员工作流的基础上添加了一个超级管理员和若干个管理员,即:多个管理员负责从开发者的远程仓库中收集、选择、整合更新的内容到自己负责的主仓库中,再由超级管理员对管理员集成的内容二次筛选,整合到主库中:
关于Git的内容就说到这里,并不是说Git比SVN更好,没有哪种版本管理更好,也没有哪种工作流程更好,根据当前环境,合适的才是最好的。
标签:android style class blog code http
原文地址:http://blog.csdn.net/lidatgb/article/details/30711971