当前位置:网站首页>MIT 6.031 Reading5 : Version Control学习心得

MIT 6.031 Reading5 : Version Control学习心得

2022-06-23 12:56:00 静静子*

目录

版本控制系统介绍

版本控制系统的类型

1. 本地版本控制系统

2. 集中式版本控制系统

3. 分布式版本控制系统

版本控制术语

版本控制系统的功能

Git简介


版本控制系统介绍

版本控制系统(Version Control System):是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制系统不仅可以应用于软件源代码的文本文件,而且可以对任何类型的文件进行版本控制。用的比较多的如svn,git等。

如果你是位图形或网页设计师,可能会需要保存某一幅图片或页面布局文件的所有修订版本(这或许是你非常渴望拥有的功能),采用版本控制系统(VCS)是个明智的选择。 有了它你就可以将选定的文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。 使用版本控制系统通常还意味着,就算你乱来一气把整个项目中的文件改的改删的删,你也照样可以轻松恢复到原先的样子,但额外增加的工作量却微乎其微。

版本控制系统的类型

1. 本地版本控制系统

许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。 这么做唯一的好处就是简单,但是特别容易犯错。 有时候会混淆所在的工作目录,一不小心会写错文件或者覆盖意想外的文件。

为了解决这个问题,人们很久以前就开发了许多种本地版本控制系统,大多都是采用某种简单的数据库来记录文件的历次更新差异。

本地版本控制系统是一个本地数据库,位于本地计算机中,其中每个文件更改都存储为补丁。它的工作原理是在硬盘上保存补丁集,通过应用所有的补丁,可以重新计算出各个版本的文件内容。

该系统的主要问题是所有数据都存储在本地,因为如果此本地数据库发生任何事情,您将丢失所有补丁。此外,如果任何内容影响了文件的一个版本,则以后的任何更改都将丢失。

使用本地版本控制系统进行协作特别困难,几乎是不可能的。

2. 集中式版本控制系统

接下来人们又遇到一个问题,如何让在不同系统上的开发者协同工作? 于是,集中化的版本控制系统(Centralized Version Control Systems,简称 CVCS)应运而生。 这类系统,诸如 CVS、Subversion 以及 Perforce 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。 多年以来,这已成为版本控制系统的标准做法。

这种做法带来了许多好处,特别是相较于老式的本地 VCS 来说。 现在,每个人都可以在一定程度上看到项目中的其他人正在做些什么。 而管理员也可以轻松掌控每个开发者的权限,并且管理一个 CVCS 要远比在各个客户端上维护本地数据库来得轻松容易。

但与本地VCS的情况一样,如果您的中央数据库损坏并且备份未保留,则整个项目历史记录将丢失。您唯一能够恢复的是人们仍然在本地计算机上拥有的快照。

3. 分布式版本控制系统

于是分布式版本控制系统(Distributed Version Control System,简称 DVCS)面世了。 在这类系统中,像Git、Mercurial、Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照, 而是把代码仓库完整地镜像下来,包括完整的历史记录。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。

分布式版本控制系统弥补了前面两种版本控制系统的缺陷,成为了版本控制的首选方案。其代表就是Git。  

版本控制术语

  • Repository(存储库):我们项目中版本的本地或远程存储
  • Working copy(工作副本):我们可以处理的项目的本地可编辑副本
  • File(文件):我们项目中的单个文件
  • Version or revision(版本修订):我们项目内容在某个时间点的记录
  • Change or diff(更改差异):两个版本之间的差异
  • Head(头):当前版本

版本控制系统的功能

  • Reliable(可靠):只要我们需要它们,就保留版本;允许备份
  • Multiple files(多个文件):跟踪项目的版本,而不是单个文件
  • Meaningful versions(有意义的版本):有哪些更改,为什么要进行更改?
  • Revert(还原):全部或部分还原旧版本
  • Compare versions比较版本)
  • Review history(查看历史记录):针对整个项目或单个文件
  • Not just for code(不仅仅是代码):散文,图像等
  • Merge(合并):合并与常见先前版本不同的版本
  • Track responsibility(跟踪责任):谁进行了更改,谁触及了该行代码?
  • Work in parallel(并行工作):允许一个程序员自己工作一段时间(不放弃版本控制)
  • Work-in-progress(正在进行的工作):允许多个程序员共享未完成的工作(不中断其他人,不放弃版本控制)

Git简介

Git和其他版本控制系统的主要差别在于:

Git只关心文件数据的整体是否发生了变化,而多数的其他系统则只关心文件内容的具体差异,它们在每个版本中记录着各个文件的具体差异。在Git中的绝大多数操作都只需要访问本地文件和资源,不需要联网。这是因为Git在本地磁盘上就保留着所有当前项目的历史更新,所以处理起来速度飞快,这是使用空间换时间的处理方式。使用Git,即使在没有网络或VPN的情况下,你同样可以非常愉快的频繁提交更新,等到有了网络的时候再提交到远程的仓库。

原网站

版权声明
本文为[静静子*]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_45981295/article/details/125345094

随机推荐