关于VersionControl

VersionControl即版本控制,版本控制是一种记录文件或文件集随时间变化的系统,以便以后可以查阅调用特定版本,版本控制系统不仅可以应用于软件源代码的文本文件,而且可以对任何类型的文件进行版本控制。如果你是图形或Web设计人员并希望保留图像或布局的每个版本(您肯定希望这样),则使用版本控制系统(VCS)是一件非常明智的事情。它允许你将所选文件还原回以前的状态,将整个项目还原回以前的状态,比较一段时间内的更改,查看最后修改了哪些可能导致问题的人,谁引入了问题以及何时等等。使用VCS通常也意味着如果你搞砸了或丢失文件,你可以轻松恢复。此外,你只需很少的开销即可获得这些

版本控制系统有本地版本控制系统、集成版本控制系统、分布式版本控制系统本地版本控制系统:很多人选择的版本控制方法是将文件复制到另一个目录(如果它们很聪明,可能是带时间戳的目录),这种方法很常见,因为它非常简单,但也非常容易出错,很容易忘记你所在的目录并意外写入错误的文件或复制你不想要的文件,为了解决这个问题,程序员很久以前就开发了一个本地VCS,它有一个简单的数据库,可以对文件的所有更改进行修订控制。集成版本控制系统:人们遇到的下一个主要问题是他们需要与其他系统上的开发人员协作,为了解决这个问题,开发了集中版本控制系统(CVCS),这些系统(例如CVS,Subversion和Perforce)具有包含所有版本化文件的单个服务器,以及从该中心位置检出文件的许多客户端,多年来,这一直是版本控制的标准,此设置提供了许多优势,尤其是在本地VCS上。例如,每个人都知道项目中的其他人正在做什么。管理员可以对谁可以做什么进行细粒度的控制,管理CVCS比处理每个客户端上的本地数据库要容易得多,但是,这种设置也有一些严重的缺点,最明显的是集中式服务器所代表的单点故障,如果该服务器停机一小时,那么在那个小时内,任何人都无法进行协作或将版本化更改保存到他们正在处理的任何内容中,如果中央数据库所在的硬盘损坏,并且没有保留适当的备份,那么您绝对会丢失所有内容 ----项目的整个历史记录,除了人们碰巧在本地计算机上发生的任何单个快照,本地VCS系统也遇到同样的问题 ------只要您将项目的整个历史记录放在一个地方,就有可能失去一切。分布式版本控制系统:当遇到以上问题的时候就需要分布式版本控制系统(DVCS),而git就是一种分布式版本控制系统,其他的DVCS还有Mercurial,Bazaar或Darcs,DVCS中客户端不只是查看文件的最新快照;,相反,它们完全镜像了存储库,包括其完整的历史记录,因此,如果任何服务器死亡,并且这些系统通过该服务器进行协作,则可以将任何客户端存​​储库复制回服务器以还原它,每个克隆都是所有数据的完整备份,此外,许多这些系统可以很好地处理他们可以使用的多个远程存储库,因此您可以在同一个项目中以不同的方式与不同的人群进行协作,这允许您设置在集中式系统中不可能的多种类型的工作流,例如分层模型。

git作用

没错,向前面提到的Git就是一个分布式版本控制软件。在进行软件开发时,一个团队的人靠使用Git,就能轻松管理好项目版本,做好项目的追踪和辅助进度控制。我们举例再来理解一下集中式版本控制和分布式版本控制,所谓“集中式版本控制”,就好比这一个团队中,版本库都集中在一台服务器上,每个开发者都要从服务器上获取最新的版本库后才能进行开发,开发完了再把新的版本提交回去,而“分布式版本控制”,则是这个团队中每个人的电脑上都会有一份完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。

在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

总之,Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。

VersionControl:git的更多相关文章

  1. Git是什么、Git的功能、为什么versioncontrol用Git、Git的常用命令、Git的优缺点

    Git是什么 git是目前世界上最先进的分布式版本控制系统(没有之一). Git是用于 Linux内核开发的版本控制工具.与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版 ...

  2. Git:Git初体验——Git安装配置

    作为即将成为一个程序员的男人,一直在听别人说Git多好多好,之前也随便了解了一些,但是始终没有决心去学会.现在大四了,只有毕设和一门开学六七周只去过一次课的全员必修课外,也没有什么事情做,何不去做这些 ...

  3. 第三章:Git使用入门

    本文主要讲git的使用,其实网上这种教程已经很多了,但是还是要说一下,在这里先把基础的东西跟大家讲一下,然后再附上一个彩蛋,将一些别人不会提到的git技术,不要错过 哦! First: Git概念 1 ...

  4. 管理分支:git branch

    新建分支的意义: 创建一个单独的工作分支,避免对主分支master造成太多的干扰,也方便与他们交流协作. 进行高风险的工作时,创建一个实验性的分支,扔掉一个烂摊子总比收拾一个烂摊子好得多. 合并别人工 ...

  5. git学习1:git安装和配置

    Git是什么?世界上最先进的分布式版本控制系统,记录了一个文本文件的每次一修改信息,比如,一篇散文,从草稿到最终出版,经历过无数次修改,修改了标点符号形成一个版本,老师帮助修改形成一个版本,同学帮忙修 ...

  6. Android自学笔记:Git下载源代码

    Info:做J2ME几年了,现在基本没有公司用了,是时候向Android领域进军了. 自学中,难免会有疏漏,有问题请及时提出,共同学习共同进步. 2014-10-13:初版 2014-10-14:添加 ...

  7. 前端见微知著番外篇:GIT舍我其谁?

    在上一篇中,我们讲到了利用纯UI的软件如何实现代码的提交.但是在MAC机器上,是没有turtoiseGit这类软件的,所以利用命令行的方式就是我们的首选了. 下面我们来描述两种主要的Git使用场景: ...

  8. 资源搜集:Git精品文章推荐,常年更新

    以下放置的是搜集到的Git精品文章,常年更新: Git 常用命令详解(二) Git版本控制软件结合GitHub从入门到精通常用命令学习手册 Pro Git(中文版)

  9. [git]解决:git config --global push.default matching

    解决:git config --global push.default matching 这个警告的意思是:需要设置默认push的分支,所以设置好全局push的默认分支就好了.命令如下: 在有git目 ...

随机推荐

  1. 【JVM】-NO.110.JVM.1 -【GC垃圾收集器】

    Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...

  2. Mybatis入门及于hibernate的区别

    pojo:不按mvc分层,只是java bean有一些属性,还有get set方法domain:不按mvc分层,只是java bean有一些属性,还有get set方法po:用在持久层,还可以再增加或 ...

  3. html5 javascript 事件练习3键盘控制练习

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  4. python locust 性能测试:locust 参数化(list) ---循环取数据,数据可重复使用

    from locust import TaskSet, task, HttpLocust class UserBehavior(TaskSet): def on_start(self): # 当模拟用 ...

  5. solr简单搜索案例

    solr简单搜索案例 使用Solr实现电商网站中商品信息搜索功能,可以根据关键字搜索商品信息,根据商品分类.价格过滤搜索结果,也可以根据价格进行排序,实现分页. 架构分为: 1. solr服务器 2. ...

  6. 一些sql优化原则

    1.我们在设计表的时候,尽量让字段拥有默认值,尽量不要让字段的值为null. 因为,在 where 子句中对字段进行 null 值判断(is null或is not null)将导致引擎放弃使用索引而 ...

  7. 【题解】Luogu P4324 [JSOI2016]扭动的回文串

    原题传送门 这题实际挺水的 先对两个字符串分别跑马拉车 就能求出1.2类扭动回文串最大的长度 考虑第三类的扭动回文串\(S(i,j,k)\),一定可以表示为\(A(i,l)+A(l+1,j)+B(j, ...

  8. charles License

    ubuntu charles 配置 Ubuntu16.04系统Charles的配置   key1: Registered Name: https://zhile.io License Key: 488 ...

  9. JS设计模式(2)策略模式

    什么是策略模式? 定义:根据不同参数可以命中不同的策略 主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护. 何时使用:有许多种情况,而区分它们的只是他们直接的行为. ...

  10. Bootstrap3基础 table-condensed 表格中的单元格紧凑一些

      内容 参数   OS   Windows 10 x64   browser   Firefox 65.0.2   framework     Bootstrap 3.3.7   editor    ...