Git笔记(1) 版本控制

  • 1. 关于版本控制
  • 2. 本地版本控制系统
  • 3. 集中式版本控制系统
  • 4. 分布式版本控制系统

1. 关于版本控制

版本控制是一种记录一个或若干 文件内容变化,以便将来 查阅特定版本修订情况 的系统

有了它就可以将某个文件回溯到之前的状态
甚至将整个项目都回退到过去某个时间点的状态

可以比较文件的变化细节,查出最后是谁修改了哪个地方
从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等

使用版本控制系统(VCS)通常还意味着
就算乱来一气把整个项目中的文件改的改,删的删
也照样可以轻松恢复到原先的样子
但额外增加的工作量却微乎其微


2. 本地版本控制系统

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

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


其中最流行的一种叫做 RCS
它的工作原理是在硬盘上保存补丁集(补丁是指文件修订前后的变化)
通过应用所有的补丁,可以重新计算出各个版本的文件内容


3. 集中式版本控制系统

接下来又遇到一个问题,如何让在不同系统上的开发者协同工作?

于是,集中式版本控制系统(Centralized Version Control Systems,简称 CVCS)应运而生

这类系统,诸如 CVS、Subversion 以及 Perforce 等
都有一个 单一的集中管理的服务器,保存所有文件的修订版本
而协同工作的人们都通过客户端连到这台服务器
取出最新的文件或者提交更新

多年以来,这已成为版本控制系统的标准做法


这种做法带来了许多好处,特别是相较于老式的本地 VCS 来说
现在,每个人都可以在一定程度上 看到项目中的其他人正在做些什么
而管理员也可以 轻松掌控每个开发者的权限

事分两面,有好有坏
这么做最显而易见的缺点是 中央服务器的单点故障
如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作
如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问将丢失所有数据

本地版本控制系统也存在类似问题
只要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险


4. 分布式版本控制系统

于是分布式版本控制系统(Distributed Version Control System,简称 DVCS)面世了

在这类系统中,像 Git、Mercurial、Bazaar 以及 Darcs 等
客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来
这么一来,任何一处协同工作用的服务器发生故障
事后都可以用任何一个镜像出来的本地仓库恢复
因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份


更进一步,许多这类系统都可以指定和若干不同的远端代码仓库进行交互
籍此,就可以在同一个项目中,分别和不同工作小组的人相互协作
可以根据需要 设定不同的协作流程,比如层次模型式的工作流
而这在以前的集中式系统中是无法实现的


参考: git

以上内容,均根据git官网介绍删减组成


谢谢

Git笔记(1) 版本控制相关推荐

  1. 【尚硅谷Java笔记+踩坑】Git(分布式版本控制工具)

    用于复习快速回顾 目录 1.Git 1.0.提交项目到GitHub简洁版 1.2.版本控制 1.3.版本控制工具 1.4.Git简史 1.5.Git工作机制 1.6.Git和代码托管中心 2.Git安 ...

  2. git操作之版本控制

    文章目录 1. 文档的修改保存 2. 如何用一个线性结构去描述一个树形结构的变化 3. 版本控制 1. 文档的修改保存 在开始做git笔记之前.我想先想想它是怎么出现的. 在我写文档的时候,常常会有这 ...

  3. 【Git笔记3】关于撤销、删除、恢复的那些事儿

    在跻身于"国庆抢票大战"的我们,不要忘记学习,今天接着上篇 [Git笔记2]必知习惯和如何版本回退,继续开干!一起来瞅瞅如何撤销没有add的修改,如何撤销以及add到暂存区的修改, ...

  4. git 32位_完整的GIT笔记 快速上手小白教程

    GIT 是什么? Git 是目前世界上最先进的分布式版本控制系统.并且它是一个免费的.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 什么是版本控制系统 版本控制是一种系统,它跟踪一 ...

  5. Git笔记(11) 分支简介

    Git笔记(11) 分支简介 1. Git 分支 2. 简介 3. 创建 4. 查看当前分支 5. 切换 6. 分叉 1. Git 分支 使用分支可以把工作 从开发主线上分离 开来,以免影响开发主线 ...

  6. Git笔记(4) 获取仓库

    Git笔记(4) 获取仓库 1. 主要获取方式 2. 在已存在目录中初始化仓库 2.1. 进入项目目录 2.2. 初始化 2.3. 追踪 2.4. 提交 3. 克隆现有的仓库 3.1. 克隆仓库 3. ...

  7. Git笔记(3) 安装配置

    Git笔记(3) 安装配置 1. 安装 Git 1.1. 在 Linux 上安装 1.2. 在 Mac 上安装 1.3. 在 Windows 上安装 2. 初次运行前的配置 2.1. 用户信息 2.2 ...

  8. Git笔记(2) 入门认知

    Git笔记(2) 入门认知 1. 近乎所有操作都是本地执行 2. 保证完整性 3. 直接记录快照,而非差异比较 4. 一般只添加数据 5. 三种状态 6. 命令行 1. 近乎所有操作都是本地执行 在 ...

  9. Git(分布式版本控制工具)

    [标注]:该笔记是转载自黑马Git教程,里面是包含自己做的笔记,黑马笔记开放共享,不存在侵权的问题,文章最后给出了资料的网盘链接 Git的学习是不依赖我们前面学习的知识,就算没有学习java也可以学习 ...

最新文章

  1. php 上传文件名乱码,php上传文件时文件名乱码怎么办
  2. Nature封面:IBM团队发布“AI辩论家”最新研究进展、Insitro创AI制药领域单笔融资金额记录 | AI日报...
  3. 收集的网络上大型的开源图像处理软件代码(提供下载链接)
  4. 你值得拥有:25个Linux性能监控工具
  5. Hystrix的应用案例:多短信供应商的自动切换与恢复
  6. mysql分页tmp_count,MySQL MyISAM和InnoDB引擎的写入速度优化比较,分页速度优化
  7. Storm【实践系列-如何写一个爬虫】 - ParserBolt
  8. 敏捷开发回顾:使团队更强大pdf
  9. php用session制作网站仿恶意刷新计数器
  10. NHibernate笔记Ⅲ--关于EF和NH的比较
  11. 一键搞定JavaEE应用 JRE+Tomcat+Mysql-JaveEE绿色运行环境JTM0 9版
  12. SC-FDE 系统 基于导频的细小偏估计
  13. 你知道Thread线程是如何运作的吗?
  14. Mac大小写切换需长按capslock键解决办法
  15. 进入微信公众平台自动跳转到小程序界面,而不是微信公众号界面。
  16. 编译原理预测分析程序的实现
  17. 全球科学家公认的高效学习法——费曼学习法
  18. 为什么CTO、技术总监、架构师都不写代码,还这么厉害
  19. Python爬虫lxml解析实战
  20. 通过vdi备份linux,Linux_Ubuntu下VirtualBox的vdi文件克隆方法,使用VirtualBox时遇到一个问题, - phpStudy...

热门文章

  1. [C++] Pure Virtual Function and Abstract Class
  2. OpenWrt 学习网址
  3. PL/SQL 结构与实例
  4. 算法高级(19)-不得不懂的Redis Cluster数据分片机制
  5. 【nacos系列】windows安装与配置nacos
  6. es xxx_by_query
  7. React native 第三方组件 React native swiper
  8. 【Prince2科普】P2七大主题之变更
  9. jpa存储byte到postgresql
  10. 改进了一下这个游戏的输出及思路,是不是好玩多了??:)