文章目录

  • 1. 文档的修改保存
  • 2. 如何用一个线性结构去描述一个树形结构的变化
  • 3. 版本控制

1. 文档的修改保存

在开始做git笔记之前。我想先想想它是怎么出现的。
在我写文档的时候,常常会有这样的一种情况:
有一天,关于我的文档的第三段,我突然有一个想法,但是我又不想把原来的东西完全否决。所以呢,我在保存文件的的时候,点击另存为,并且命名为:我的文档-修改第三段的想法。此时我的文件夹里面就是这样子的:

后来我有分别在第四段,第五段的上的基础上进行修改,此时我的文件夹就会变成这样。

这是在原来同一文件的不同地方进行修改,目前这种方法还能应付。
有一天,我突然想在原来的文档的第三段上进行修改。为了不重名,我将文档另存为这样

此时,对于在原来的文件上的相同地方进行不同的修改的情况,这样方法已经出现一点问题了,但是还是能勉勉强强能用。但是他们都有一个共同点–在我的文档上修改的。即这个样子的:

存在的问题:修改第三段修改第三段01存在一定的歧义,以后可能不知道改了哪里。为了解决这个问题,可以做如下修改

这样的话,存在的歧义就会变少了。如果修改过多的话,

已经开始感觉文件很乱了。

前面的情况还只是针对在同一个原始文件上进行修改。在真实场景下,绝对不可能每次都在原始文件上进行修改。还有可能在修改了的情况下修改。比如我现在要在我的文档-修改了第三段文件上进行上述修改。


如果我在我的文档-修改了第三段上进行原来我在我的文档上的修改,那么我的文档的混乱程度可想而知(更别提我又多个文件)。其实,想到这里,问题已经显现出来了:
结合我在每个文件截图下面的思维导图,可以发现我一直在用一个线性表去描述一个树形结构的变化

2. 如何用一个线性结构去描述一个树形结构的变化

首先,很抱歉起了这样的一个让人误会的标题,一个线性结构是无法去描述一个树形结构的(至少从目前我的知识水平来认为),否则,树这种数据结构就不会出现了。但是我为什么要取这样一个标题呢?请接着往下看。

还是上面的那个问题。其实还有一种解决办法,前面我们是从文件的角度看待这个问题,他是一种树形变换。但是如果我们从时间的角度看待这个问题,那么它就是一个线性变换的了。就像下面这个样子(请忽略后面的修改日期):

此时,我们的文档变换就是一种线性的了。但是,这样的话,我们就会损失很多信息。比如文档的变换信息。也许有人会说,我在日期后面再加上一段信息不就行了。就像这个样子:

这样做的话,确实可以携带一部分信息,但是又会陷入原来的问题,无法描述树形变换。当然,这样做的好处是,在原来线性结构的基础上加了一个信息(时间字段),它可以让我们从时间的角度来看待文档的版本变换

3. 版本控制

对于前面的问题,我们抽象成如下格式:

那么,版本控制要做的就是对这样一个个的版本块进行控制。

git操作之版本控制相关推荐

  1. git操作手册_基本的Git手册

    git操作手册 介绍 (Introduction) Hi! I am Sanjula, and in this guide I hope to teach you a little bit about ...

  2. 手把手教你熟悉Git操作

    文章目录 Git 一.版本控制 二.Windows安装Git 1. Git 安装 2. Git 一次性配置 三.理解Git文件的三种状态与工作模式 四.创建版本库并提交文件 1. 初始化git 2. ...

  3. 实时 Git,在版本控制之前控制源码

    Git 用于源代码版本控制已经是一个很强大的神器了,但是有人在此基础上还开发了一个被认为是"实时 Git"的工具. 这个工具叫 Coactive,它以 Visual Studio ...

  4. git 回滚到某个commit_Git 整理 v1.0 | Git 操作整理进阶篇

    多选参数-小林翻唱,请多多支持,附上网易云链接:https://music.163.com/#/song?id=1441451111 0. 前言 这是程序锅对之前学习和使用 Git 做的一份整理,后头 ...

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

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

  6. Git操作与仓库创建

    Git简介 首先了解一个概念:版本控制,简单来说就是如果你做文案工作,每次提交之后,你的领导会让你修改,一篇稿子可能修改十几次,但是最后定稿的很可能不是最新修改的那一稿,所以就需要有个版本控制的方法, ...

  7. Git操作 【详细】【详细】

    什么是 Git Git 是一个开源的分布式版本控制系统,是目前世界上最先进.最流行的版本控制系统.可以快速高效地处理从很小到非常大的项目版本管理. 特点: 项目越大越复杂,协同开发者越多,越能体现出 ...

  8. Idea 中的 Git 操作看这一篇就够了(最全的讲解,文章比较长,截图比较多是为了说明问题)

    环境部分略过 从0开始创建一个项目,用来讲解git,会包括创建远程新分支,回滚等操作. 在每一个讲解过程中都会有问题提问 基础部分讲解 实战高级部分 基础部分内容 如果在github上已有仓库    ...

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

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

最新文章

  1. 第四章(变量、作用域、内存问题)
  2. python 读写数据
  3. 并发编程:原子性问题,可见性问题,有序性问题。
  4. 神策数据全新服务体系——打造用户行为分析领域服务最高标准
  5. xil_printf打印遇到的问题
  6. c语言运行后出现xt073,2017年北京工业大学城市交通学院894C语言与数据结构之C程序设计考研强化模拟题...
  7. Python20-Day03
  8. java零碎要点---class()、getClass()、Class.forName()、getClassLoader()的区别和联系--又不详细的地方求补充
  9. [图像处理]指定任意灰度变换
  10. Oracle用户权限分配的具体方法
  11. QML Logical value dose not depend on actual values(M325)
  12. 开关电源设计书籍推荐
  13. 平面关系:平行,垂直,夹角判定
  14. Filter过滤指定ip地址
  15. 用c语言编写计算器计划报告书,用c语言编写计算器计划报告书.docx
  16. linux fastQC 操作命令,Linux shell合并fastq测序数据/批量fastqc小脚本|merge|multiqc
  17. Frequency-tuned Salient Region Detection (频率调谐显著性区域检测)
  18. linux c语言 打开文件,linux c打开文件的方法
  19. 计算机辅助普通话水平测试应试手册,普通话水平测试应试手册
  20. Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程

热门文章

  1. 放在每个定义前的html语言,html基础
  2. HTML字体怎么显示,教你如何用CSS来控制网页字体的显示样式
  3. 创建水印文字_推荐免费物业现场品质管理新工具—马克水印相机
  4. linux 备份mbr,MBR的备份与恢复
  5. 统计插件_CG Teamwork统计提交量插件制作思路
  6. 【机器学习算法专题(蓄力计划)】十四、机器学习中逻辑回归
  7. 述说互联网1.0时代的巨头Yahoo的25年消亡史,传奇巨头落幕的故事
  8. 八、马科维茨投资组合
  9. 微信小程序学习笔记(四)
  10. Python与常见加密方式