git操作之版本控制
文章目录
- 1. 文档的修改保存
- 2. 如何用一个线性结构去描述一个树形结构的变化
- 3. 版本控制
1. 文档的修改保存
在开始做git笔记之前。我想先想想它是怎么出现的。
在我写文档的时候,常常会有这样的一种情况:
有一天,关于我的文档的第三段,我突然有一个想法,但是我又不想把原来的东西完全否决。所以呢,我在保存文件的的时候,点击另存为,并且命名为:我的文档-修改第三段的想法
。此时我的文件夹里面就是这样子的:
后来我有分别在第四段,第五段的上的基础上进行修改,此时我的文件夹就会变成这样。
这是在原来同一文件的不同地方
进行修改,目前这种方法还能应付。
有一天,我突然想在原来的文档的第三段上进行修改。为了不重名,我将文档另存为这样
此时,对于在原来的文件上的相同地方进行不同的修改
的情况,这样方法已经出现一点问题了,但是还是能勉勉强强能用。但是他们都有一个共同点–在我的文档上修改的。即这个样子的:
存在的问题:修改第三段
和修改第三段01
存在一定的歧义,以后可能不知道改了哪里。为了解决这个问题,可以做如下修改
这样的话,存在的歧义就会变少了。如果修改过多的话,
已经开始感觉文件很乱了。
前面的情况还只是针对在同一个原始文件
上进行修改。在真实场景下,绝对不可能每次都在原始文件上进行修改。还有可能在修改了的情况下修改。比如我现在要在我的文档-修改了第三段
文件上进行上述修改。
如果我在我的文档-修改了第三段
上进行原来我在我的文档
上的修改,那么我的文档的混乱程度可想而知(更别提我又多个文件)。其实,想到这里,问题已经显现出来了:
结合我在每个文件截图下面的思维导图,可以发现我一直在用一个线性表去描述一个树形结构的变化。
2. 如何用一个线性结构去描述一个树形结构的变化
首先,很抱歉起了这样的一个让人误会的标题,一个线性结构是无法去描述一个树形结构的(至少从目前我的知识水平来认为),否则,树这种数据结构就不会出现了。但是我为什么要取这样一个标题呢?请接着往下看。
还是上面的那个问题。其实还有一种解决办法,前面我们是从文件的角度看待这个问题,他是一种树形变换。但是如果我们从时间的角度看待这个问题,那么它就是一个线性变换的了。就像下面这个样子(请忽略后面的修改日期):
此时,我们的文档变换就是一种线性的了。但是,这样的话,我们就会损失很多信息。比如文档的变换信息。也许有人会说,我在日期后面再加上一段信息不就行了。就像这个样子:
这样做的话,确实可以携带一部分信息,但是又会陷入原来的问题,无法描述树形变换。当然,这样做的好处是,在原来线性结构的基础上加了一个信息(时间字段),它可以让我们从时间的角度来看待文档的版本变换。
3. 版本控制
对于前面的问题,我们抽象成如下格式:
那么,版本控制要做的就是对这样一个个的版本块进行控制。
git操作之版本控制相关推荐
- git操作手册_基本的Git手册
git操作手册 介绍 (Introduction) Hi! I am Sanjula, and in this guide I hope to teach you a little bit about ...
- 手把手教你熟悉Git操作
文章目录 Git 一.版本控制 二.Windows安装Git 1. Git 安装 2. Git 一次性配置 三.理解Git文件的三种状态与工作模式 四.创建版本库并提交文件 1. 初始化git 2. ...
- 实时 Git,在版本控制之前控制源码
Git 用于源代码版本控制已经是一个很强大的神器了,但是有人在此基础上还开发了一个被认为是"实时 Git"的工具. 这个工具叫 Coactive,它以 Visual Studio ...
- git 回滚到某个commit_Git 整理 v1.0 | Git 操作整理进阶篇
多选参数-小林翻唱,请多多支持,附上网易云链接:https://music.163.com/#/song?id=1441451111 0. 前言 这是程序锅对之前学习和使用 Git 做的一份整理,后头 ...
- Git(分布式版本控制工具)
[标注]:该笔记是转载自黑马Git教程,里面是包含自己做的笔记,黑马笔记开放共享,不存在侵权的问题,文章最后给出了资料的网盘链接 Git的学习是不依赖我们前面学习的知识,就算没有学习java也可以学习 ...
- Git操作与仓库创建
Git简介 首先了解一个概念:版本控制,简单来说就是如果你做文案工作,每次提交之后,你的领导会让你修改,一篇稿子可能修改十几次,但是最后定稿的很可能不是最新修改的那一稿,所以就需要有个版本控制的方法, ...
- Git操作 【详细】【详细】
什么是 Git Git 是一个开源的分布式版本控制系统,是目前世界上最先进.最流行的版本控制系统.可以快速高效地处理从很小到非常大的项目版本管理. 特点: 项目越大越复杂,协同开发者越多,越能体现出 ...
- Idea 中的 Git 操作看这一篇就够了(最全的讲解,文章比较长,截图比较多是为了说明问题)
环境部分略过 从0开始创建一个项目,用来讲解git,会包括创建远程新分支,回滚等操作. 在每一个讲解过程中都会有问题提问 基础部分讲解 实战高级部分 基础部分内容 如果在github上已有仓库 ...
- 【尚硅谷Java笔记+踩坑】Git(分布式版本控制工具)
用于复习快速回顾 目录 1.Git 1.0.提交项目到GitHub简洁版 1.2.版本控制 1.3.版本控制工具 1.4.Git简史 1.5.Git工作机制 1.6.Git和代码托管中心 2.Git安 ...
最新文章
- 第四章(变量、作用域、内存问题)
- python 读写数据
- 并发编程:原子性问题,可见性问题,有序性问题。
- 神策数据全新服务体系——打造用户行为分析领域服务最高标准
- xil_printf打印遇到的问题
- c语言运行后出现xt073,2017年北京工业大学城市交通学院894C语言与数据结构之C程序设计考研强化模拟题...
- Python20-Day03
- java零碎要点---class()、getClass()、Class.forName()、getClassLoader()的区别和联系--又不详细的地方求补充
- [图像处理]指定任意灰度变换
- Oracle用户权限分配的具体方法
- QML Logical value dose not depend on actual values(M325)
- 开关电源设计书籍推荐
- 平面关系:平行,垂直,夹角判定
- Filter过滤指定ip地址
- 用c语言编写计算器计划报告书,用c语言编写计算器计划报告书.docx
- linux fastQC 操作命令,Linux shell合并fastq测序数据/批量fastqc小脚本|merge|multiqc
- Frequency-tuned Salient Region Detection (频率调谐显著性区域检测)
- linux c语言 打开文件,linux c打开文件的方法
- 计算机辅助普通话水平测试应试手册,普通话水平测试应试手册
- Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程