当前位置:网站首页>MIT 6.031 Reading5 : Version Control学习心得
MIT 6.031 Reading5 : Version Control学习心得
2022-06-23 12:56:00 【静静子*】
目录
版本控制系统介绍
版本控制系统(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的情况下,你同样可以非常愉快的频繁提交更新,等到有了网络的时候再提交到远程的仓库。
边栏推荐
- .Net怎么使用日志框架NLog
- HomeKit支持matter协议,这背后将寓意着什么?
- 20 years' Shanghai station D question Walker (two points, concise)
- #云原生征文#深入了解Ingress
- R language is used to build ordered multi classification logistic regression model, ordinal or. The display function obtains the summary statistical information of the ordered logistic regression mode
- 服务稳定性治理
- Loss, duplication and backlog of message queues
- AGCO AI frontier promotion (6.23)
- Gradle Build Cache引发的Task缓存编译问题怎么解决
- R语言使用MASS包的polr函数构建有序多分类logistic回归模型、使用summary函数获取模型汇总统计信息
猜你喜欢

Filtre de texte en ligne inférieur à l'outil de longueur spécifiée

"Four highs" of data midrange stability | startdt Tech Lab 18

64 channel telephone +2-channel Gigabit Ethernet 64 channel PCM telephone optical transceiver voice telephone to optical fiber

DBMS in Oracle_ output. put_ How to use line

Quickly understand the commonly used asymmetric encryption algorithm, and no longer have to worry about the interviewer's thorough inquiry

你管这破玩意儿叫 MQ?

OS的常见用法(图片示例)

64 channel PCM telephone optical transceiver 64 channel telephone +2-channel 100M Ethernet telephone optical transceiver 64 channel telephone PCM voice optical transceiver

32-way telephone +2-way Gigabit Ethernet 32-way PCM telephone optical transceiver supports FXO port FXS voice telephone to optical fiber

Hanyuan hi tech 1-channel gigabit optical port to 4-channel Gigabit Ethernet electrical port Gigabit 1-optical 4-electric optical fiber transceiver
随机推荐
技术分享| WVP+ZLMediaKit实现摄像头GB28181推流播放
How to write vite plug-ins
windows 安装 MySQL
Cifar announces the second stage pan Canadian AI strategy
LM05丨曾经的VIX(二代产品)
Go写文件的权限 WriteFile(filename, data, 0644)?
How long is the financial product? Is it better for novices to buy long-term or short-term?
Germancreditdata of dataset: a detailed introduction to the introduction, download and use of germancreditdata dataset
How did Tencent's technology bulls complete the overall cloud launch?
4k-hdmi optical transceiver 1 channel [email protected] Hdmi2.0 optical transceiver HDMI HD video optical transceiver
How to use sed -i command
美国的国家公园概览
32-way telephone +2-way Gigabit Ethernet 32-way PCM telephone optical transceiver supports FXO port FXS voice telephone to optical fiber
Online text filter less than specified length tool
Hanyuan hi tech 8-way telephone +1-way 100M Ethernet RJ11 telephone optical transceiver 8-way PCM telephone optical transceiver
Tt-slam: dense monocular slam for flat environment (IEEE 2021)
You call this shit MQ?
Dataset之GermanCreditData:GermanCreditData数据集的简介、下载、使用方法之详细攻略
618's money saving technology strategy is coming - experience the scene and get a 10 yuan cat super card!
R language is used to build ordered multi classification logistic regression model, ordinal or. The display function obtains the summary statistical information of the ordered logistic regression mode