Skip to content

Latest commit

 

History

History
52 lines (33 loc) · 5.41 KB

什么是版本的控制.md

File metadata and controls

52 lines (33 loc) · 5.41 KB

1.1 什么是版本控制

如果你用Microsoft Word写过长篇大论,那你一定有这样的经历:

想删除一个段落,又怕将来想恢复找不回来怎么办?有办法,先把当前文件“另存为……”一个新的Word文件,再接着改,改到一定程度,再“另存为……”一个新文件,这样一直改下去,最后你的Word文档变成了这样:

lots-of-docs

过了一周,你想找回被删除的文字,但是已经记不清删除前保存在哪个文件里了,只好一个一个文件去找,真麻烦。

看着一堆乱七八糟的文件,想保留最新的一个,然后把其他的删掉,又怕哪天会用上,还不敢删,真郁闷。

更要命的是,有些部分需要你的财务同事帮助填写,于是你把文件Copy到U盘里给她(也可能通过Email发送一份给她),然后,你继续修改Word文件。一天后,同事再把Word文件传给你,此时,你必须想想,发给她之后到你收到她的文件期间,你作了哪些改动,得把你的改动和她的部分合并,真困难。

于是你想,如果有一个软件,不但能自动帮我记录每次文件的改动,还可以让同事协作编辑,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以,岂不是很方便?

这个软件用起来就应该像这个样子,能记录每次文件的改动:

版本 用户 说明 日期
1 张三 删除了软件服务条款5 7/12 10:38
2 张三 增加了License人数限制 7/12 18:09
3 李四 财务部门调整了合同金额 7/13 9:51
4 张三 延长了免费升级周期 7/14 15:17

这样,你就结束了手动管理多个“版本”的史前时代,进入到版本控制的20世纪。

总的来说,版本控制系统系统帮我们提供以下好处:

协同合作

试想一下,如果没有版本控制系统,当你需要处理那些共享文件夹中的文件时,你必须告知办公室里的所有人,你正在对哪些文件进行编辑;与此同时,其他人必须要避免与操作相同的文件。这是一个不现实和完全错误的流程。当你花了很长时间完成你的编辑后,可能这些文件早已经被团队里的其他开发成员修改或者删除了。

如果使用了版本控制系统,每一个团队成员都可以在任何时间对任何文件毫无顾虑的进行修改,版本控制系统可以把之后所有的改动合并成一个共同的版本,不论是一个文件还是整个项目。这个共同的中心平台就是我们的版本控制系统。

使用版本控制还有更多优点,这就要取决于你自己或者你的开发团队了。

版本存储(正确地)

经常性地保存项目的改动是一个非常重要的习惯。但是如果没有版本控制系统这个操作将是非常困难的,并且非常容易出错的:

你到底改动了什么?仅仅是针对一些特定文件的改动还是整个项目?首先你必须及时并小心地审查整个项目的每一个可能的改动细节,然后你需要付出大量且并不必要的时间来整理它。 你如何命名这些版本?如果你是一个思维很有条理的人,你也许会定义一个比较容易理解的通用命名规则(比如这样 “acme-inc-redesign-2013-11-12-v23”)。然而一旦涉及到一个多样性的改变(比如:在一次版本改动中,一些改动了标题区而另一些却没有被改动它),仅仅通过名字是很难追踪和判断这些改动的。 最重要的问题可能就是你如何知道在第一个版本和第二个版本之间到底进行了哪些改动?只有很少人会真正地去花时间来仔细记录和观察每一个重要的变化,例如在项目文件夹的每一个README文件。 每一个版本控制系统仅仅对应一个项目。因此,在你的本地只存在一个版本,那就是这个项目的当前工作版本。除此之外,而其它所有之前的版本和改动都已经被有序地存储在版本控制系统中了。当你需要时,你可以随时来查看之前的任何一个版本,而且还可以得到整个项目的快照。

恢复之前的版本

要把一些文件恢复到上次改动之前的版本(甚至整个项目恢复到之前的版本)。这可能意味着你发现了一些严重的问题!如果你确定那些改动是错误的或者是没有必要的,那轻松的点几下你就可以简单地撤销它。在项目的每一个重要阶段,认识和正确地使用撤销这个功能会让你的工作变得非常轻松。

了解发生了什么

每当你提交一次对项目新的改动时,你的版本管理系统会要求你添加一个对这次改动的简短描述。除此之外(如果是一个代码或者文本文件),你还可以看到一个改动前和改动后的内容的详细对照。这样也可以帮助你很好地了解版本与版本之间的发展关系。

备份

备份是一个分布式版本控制系统(例如 Git)提供的非常好的附带功能。每一个团队成员都会在他的本地有一个完整的项目副本,包括整个项目的历史记录。如果你所依赖的服务器宕机了,或者是你的存储硬盘坏,所有你需要的恢复文件都可以在另外的团队成员的git本地仓库中得到。