1.1 版本控管与Git

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/oscar999/article/details/82413651

版本与版本控管

版本是记录特定对象各个可选状态的快照,版本管理的任务就是对对象的历史演变过程进行记录和维护 。版本控制软件提供完备的版本管理功能,用于存储、追踪目录和文件的修改历史的工具软件。
版本管理在很多场景都会有,随着软件的兴起和蓬勃发展而迅速发展,成为软件开发中协同工作的必备工具。

单人工作版本管理的需求:
对一篇短文或是诗歌进行修改,改动记录和历史或许不是很多,但是,如果是写一篇大的论文,类似毕业论文,从开题到最后论文提交,这中间有多少改动, 比如说写一篇 “论Git”的论文, 往往在论文结束的时候,磁盘里有很多版不同名字的文件: 论Git, 论Git-导师修改版,论Git-提交版,论Git-提交修改版,论Git-答辩版,论Git-答辩修改版,论Git-终极版,…; 还有的命名直接是:论Git-V1,论Git-V2,… 论Git-Vn。旧的版本也有价值,不能删除。这么多版本,作者自己也经常搞不清,以至于在论文后期把错误版本的论文进行了提交。而且,幸运的通过了论文答辩,有其他人请假经验的时候,有点茫然,因为整个过程有点紧张,大部分的时间节点和过程都遗忘了。如果有版本控制软件, 记录整个修改过程, 并记录一些当时的心得,这些问题就完美解决了。

多人协作下版本管理的需求:
很难想象如果没有版本管理,在软件开发中,多人协作该如何进行。是谁提交的代码不知道,什么时间提交的代码不知道,多个人对同一个文件修改,总会发现改动被别人覆盖。

版本管理工具基本上具有以下功能:
1. 记录历史
记录文件修改的时间、提交人。

  1. 版本回退
    回退到某个时间点

  2. 团队协作
    能处理多人同时修改的问题,不同的软件的操作方式有一些差异。

    4.分支与合并

    版本控管发展历史

    版本管理大致经过了四个阶段:
    从早期的rcs, 到集中式的CVS,VSS, Perforce,SVN 多分天下,再到bitkeeper分布式,已经git逐步独霸。

这里写图片描述

Git历史

Git是一个开源的分布式版本控制系统(也可以叫工具或是软件)。

一段历史:
Linux之父 Linus Torvalds与BitMover公司创始人Larry McVoy曾是很要好的朋友, BitMover开发了一款还不错的分布式SCM(软件配置管理)软件-Bitkeeper。基于Linux的影响力,Larry McVoy说服了Linus使用Bitkeeper管理Linux,1999年12月, Linux PowerPC项目首 先开始使用BitKeeper;2002年2月,开始用它来管理Linux内核代码主线。但是作为一个商业付费的软件,有提供了一个可以免费使用但是不允许修改的精简版本。Linus内核开发从2002年到2005年的3年时间里,使用BitKeeper,Linux的开发步伐加快了两倍。但是作为开源精神的领头羊,使用非自由软体来进行Linux核心代码的管理,除了受到其他自由软件大佬(Richard Stallman)的批评外,Liunx团队内部也是非议很多。
2005年, Samba文件服务器开发人Andrew Tridgell写了链接BitKeeper存储库的简单程序,被Larry McVoy指控对BitKeeper进行逆向工程,Linus多次协调无效,McVoy还是决定停止BitKeeper对Linux的支持。一怒之下,Linus在BitKeeper的使用经验基础上, 在一个周末的时间创造了Git, 将Bitkeeper送入了末路。

分布式与集中式

与其他的版本控管工具相比, Git 最大的特点就是分布式。
与分布式对应的是集中式, 也就是服务器-客户端的模式。这种模式的特点是有一台中央的代码控管服务器, 不同的开发机器作为客户端从服务器获取代码和进行代码提交。

而对于分布式的Git来说, 每个客户端的机器都可以作为代码控管的服务器, 可以进行代码的检出和上传。
但是, Git 也有中央服务器的概念,而且在大部分的状况下都会使用到中央服务器。

对于习惯集中式代码控管工具的开发者来说(比如Perforce), 可以这样来理解集中式:如果在每台机器的本地安装一个Perforce 服务器, 再到一台共用的服务器上架设一台Perforce服务器作为中央服务器。代码先提交到本地的服务器, 再从本地的服务器汇总到中央服务器。只是Perforce等工具没有这样的功能, Git 做到了。

因为本地也是服务器, 也可以进行提交等动作, 所以不联网也可以进行代码的提交和控管, 等到网络恢复才推送到中央服务器。除此,Git 还支持多种协议和提交方式, 在一些Git的平台上可以使用网页的方式进行代码改动,提交和管理

猜你喜欢

转载自blog.csdn.net/oscar999/article/details/82413651
1.1