共计 1341 个字符,预计需要花费 4 分钟才能阅读完成。
在开发中 git 是最常用的版本控制软件,在学习极客时间苏玲的《玩转 git 三剑客》前,对 git 的使用只停留在 add,commit,pull,push 上,稍微复杂点的 checkout 就不会使用了。在一次项目中,用到了 merge,让我对 git 充满了好奇,正好这时极客时间推出了 git 的课程,我毫不犹豫的购买了。
虽然 git 已经烂大街了,再写关于 git 的文章也没什么价值了,但我还是要自己写点文章,一方面记录自己学习的心得,另一封面,也锻炼下自己的写作能力,吴军老师说过:要想让一个人会说,逻辑清晰,首先得会写。很多人肚子里有东西,但是说不出来,表达的别人看不懂,听者看来,和没有没太大区别。所以这也是锻炼自己的方式。
什么是版本控制
版本控制能够追踪工程蓝图从诞生一直到定案的过程,确保由不同人员所编辑的程序文件都能得到同步。
最简单的版本控制是 copy 多份项目,并进行适当的编号,这种方法高度依赖开发者的自我纪律,很容易导致错误。因此自动化的版本控制系统应运而生。
大部分版本控制软件都采用差分编码,只保留文件相继版本之间的差异,减少存储空间。
中央式系统和分布式系统
一个项目中有好几给开发人员同时参与,如果两个人同时改变一个文件,而没有管理访问权限,就会造成代码冲突。所以有两种方法:1、中央式系统,由中央管理访问权限;2、分布式系统,可以同时容许多个单位同时进行。
版本控制系统演变历史
在版本控制系统出来之前是怎么开发的呢?
在服务器上面将文件共享出来,各自建个文件夹,以目录拷贝的方式来区分不同的人开发的东西;
自己开发的东西也通过这种文件夹的形式标出 1.0、2.0、3.0;
这种方法大家开发的公共文件是很容易被覆盖的,
还有我在开发的时候,我得不停的跟人家说,我在开发这个,你们先别动,
所以沟通成本非常高,项目集成效率低下。
以目录形式区别不同版本的形式不仅仅是过去,现在还存在,当然时代在发展,在这几十年当中有很多版本控制系统走入了我们世界,其中像 cvs 和 vsn 这种集中式的控制系统,他曾经被很多团队和公司所接受。
集中式的版本控制系统,它有什么样的特征呢?
有集中的版本管理服务器,这个服务器存放了每个文件或者文件夹的演变历史。也就是,哪天你本地没有这个项目,你去服务器取也是非常容易的。提供了历史版本的搜索能力,以及不同版本之间比较的能力。
具备文件版本管理和分支管理能力。可以让不同的分支做集成,
优点:这些特征使得集中式的版本控制系统,比起之前没有版本控制的项目,它的效率在集成方面是有明显的提高的。缺点:客户端必须时刻和服务器相连,因为客户端不具备服务器端一样的目录结构。
有很多人认为,集中式的版本控制系统在速度上和性能上是不足的。后来基于集中式的版本控制系统的不足,开发了分布式的版本控制系统。
它们最大的区别是,服务端和客户端都有完整的版本库,脱离服务端,客户端照样可以管理版本,查看历史和版本比较等多数操作,都不需要访问服务器,比集中式的 VCS 更能提高版本管理的效率。
git 特点
最优的存储能力
非凡的性能,得益于林纳斯是非常有喜的 linux 内核专家以及文件系统管理专家
开源的
很容易做备份,支持离线操作
很容易定制工作流程
一个学习 git 的网址
以上参考资料来自:维基百科 和 苏玲《玩转 git 三剑客》第一讲