Doc as Code (4):使用Git做版本管理,而不是使用目录做版本管理

news2024/11/26 18:50:14

▲ 搜索“大龙谈智能内容”关注GongZongHao▲ 

在引入版本管理工具之前,文档工程师使用文件系统提供的功能来管理文件。大家是这样工作的:

  • 文件按照分类放在不同的目录里,使用编辑器(如:MS Word)打开文档进行编辑。

  • 如果改版,则新创建一个目录并将文件拷贝一份进行编辑。

于是,出现了这种目录结构:

我们把上边这种方法叫做使用目录做版本管理。 

Git是版本管理工具,出来很多年,在软件开发领域得到广泛的应用,已经非常成熟稳定了。

有些文档团队已经使用Git来管理文档。不过,鉴于以前的习惯,将不同版本的文档放在不同目录的方法被沿袭下来

但是,这种方式只是使用Git来让团队成员协作和共享文档,它并没有很好地利用Git的版本管理的能力

今天就来说说怎样使用Git更好地进行版本管理。

- 1 -

分支

版本控制系统最初是为软件研发设计的。顾名思义,分支就是从主线上分离出来进行另外的操作,而又不影响主线,主线又可以继续干它的事,最后分支做完事后合并到主线上

几乎所有的版本控制系统(SVN, Git等)都以某种形式支持分支。实现方式有不同,但是基本思路是一样的。 

通过下边的分支使用的例子,看看怎么用。 

- 2 -

分支的使用

下边是使用分支的一种方法(不是唯一方法)。 箭头方向代表时间向前的方向。 

1. 为产品初始编写文档

创建Git仓库的时候,它有一个默认的分支,这个分支叫做master。

提交的更改都放在master这个分支。 

2. 当1.0版本完成定稿

创建1.0分支,用来记录这一时刻的内容。后续新功能的开发继续提交到master分支上。

为什么要创建分支呢?主要是记录这个时刻的内容,待到将来任何一个时间点都能获取现在的内容。

3. 当1.1版本完成定稿

创建1.1分支,用来记录这一时刻的内容。后续新功能的开发继续提交到master分支上。

4. 当2.0版本完成定稿

创建2.0分支,用来记录这一时刻的内容。后续新功能的开发继续提交到master分支上。

这样最终形成一个像树一样的结构(倒过来的树)。通过这些分支,随时可以取得这些节点的内容。 

- 3 -

分支与目录

可以看到使用Git的分支作为版本,替代了之前用目录作为版本。 在文件系统中,不再有一个1.0, 1.1这样的目录。  

这样做的好处有几点:

1. 支持同时编辑多个版本的内容

假设我们为一个软件编写文档。如上边分支的图,我们已经发布了2.0版本的文档,现在正在编写下一个版本的新功能文档。这时2.0版本发现一个bug,我们需要去2.0版本修改文档然后发布。 

这时我们使用Git的分支切换的功能,切换到2.0这个版本分支

神奇的地方在于,它将当前工作目录中的内容回退/切换到2.0版本的目录和文件内容。 在创建2.0这个分支这个时间点以后新加的目录、新加的文件都没有了。 (如果切换回master分支,又都有了)

这时候对文档进行改动并提交,这个变更会被放在2.0这个分支上。 

2. 将一个版本的变更合并到另外一个版本上

假设这个bug在最新版中也被修复了,我们只需要将2.0分支上的修改合并到master上,这样为修复这个bug更改的文档内容都会被合并到master上。 

如果使用目录进行版本管理,无法做到合并。我们如果直接将2.0版本的文件覆盖到master上,在master上做的所有更改都将丢失。使用Git的分支合并功能,则不会丢失。 

3. 查看一个文件的所有变更历史

如果当前分支是master分支,我们可以看到这个分支上所有文件的所有历史提交记录(从最初加入文件开始)。

点击进去可以看到这次到底修改了什么:

(红色代表删除的行,绿色代表增加的行)

在使用目录管理版本的情形,则看不到一个文件的所有历史,只能看到当前这个版本的历史。 

原因是我们创建新版是将文件从一个目录拷贝到另外一个目录。拷贝前的文件和拷贝后的文件并没有关联关系,无法追溯。

通过GongZongHao搜索“大龙谈智能内容”联系我们。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1186258.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SOLIDWORKS --流体仿真篇

SIMULIA流体仿真是什么? 模拟并预测复杂环境下围绕和穿过实体和结构的稳态及瞬态的内外部流(包括热传递),例如湍流气流、颗粒运动、表面沉积等 .提供定性、定量以及可视化的分析手段,可实现多尺度多物理的视觉效果 SIMULIA流体仿真能做什么? 1.高效的仿真前处理…

多变量线性回归练习

读取数据特征归一化 mean是均值 将特征大小控制在 -1~1之间 房屋的面积对价格的影响 卧室数量对价格的影响 损失函数 def costFunction(X,y,theta): inner np.power(Xtheta-y,2) return np.sum(inner)/(2*len(X)) 梯度下降 def gradientDescent(X,y,theta,alpha,iters…

“第六十四天” 字扩展和位扩展,外部存储器

存储器和CPU的连接; 现在的计算机MAR,MDR通常集成在CPU内部。存储芯片内只需一个普通的寄存器(暂存输入,输出数据)。 位扩展,字扩展,字位同时扩展; 位扩展: 位扩展的增加的是主存的…

走势分析:鹰言齐发避险需求减弱、金价仍有走低预期和空间

上交易日周二(11月07日):国际现货黄金/伦敦金触底回升收跌,虽未收至中轨线下方,令后市仍有偏向震荡或再度走强的预期,但主图短期均线死叉信号保持,并对其产生压力,附图指标也维持空头信号发展,也…

深度学习入门-基于Python的理论与实现摘要记录

基本是《深度学习入门-基于Python的理论与实现》的复制粘贴,以作为日后的检索和查询使用 感知机 感知机接收多个输入信号,输出一个信号。 感知机原理 感知机接收多个输入信号,输出一个信号。 图2-1是一个接收两个输入信号的感知机的例子。…

【软考的故事】软考从泄题风波到机考改革,是何原委?

写在前面 有些日子没写文章了,今天咱不谈技术,就聊聊软考机考改革的事情吧,其实事情的起因还得从上半年的考试泄题舞弊案说起,也是我第一次参加软考,因为我是从事web开发的,所以对网络也是半知半解的&…

基于Qt窗口文件新建_编辑_打开_保存_另存_剪切和复制和粘贴项目(文件操作直接套源码)

# .pro文件 QT += widgetsrequires(qtConfig(filedialog))​HEADERS = mainwindow.hSOURCES = main.cpp \ mainwindow.cppRESOURCES = sdi.qrc​# installtarget.path = $$[QT_INSTALL_EXAMPLES]/widgets/mainwindows/sdiINSTALLS += target​…

昇腾CANN 7.0 黑科技:DVPP硬件加速训练数据预处理,友好解决Host CPU预处理瓶颈

在NPU/GPU上进行模型训练计算,为了充分使用计算资源,一般采用批量数据处理方式,因此一般情况下为提升整体吞吐率,batch值会设置的比较大,常见的batch数为256/512,这样一来,对数据预处理处理速度…

STM32H750之FreeRTOS学习--------(五)临界段代码保护

FreeRTOS 文章目录 FreeRTOS五、临界段代码保护临界段代码保护函数任务级进入临界段任务级退出临界段中断级进入临界段中断级退出临界段 任务调度器的挂起和恢复挂起任务调度器恢复任务调度器挂起任务调度器恢复任务调度器 五、临界段代码保护 临界段代码也叫做临界区&#xf…

URP内置Lit.Shader文件ForwardLit Pass解析

文章目录 Lit 主文件PropertiesSubShader代码块FormardLit标签编译命令声明关键字材质属性关键字 Material Keywords渲染流水线关键词 Universal Pipeline keywordsUnity定义的关键词 Unity defined keywords 包含指令 1. LitInput.hlsl(1)属性变量&…

excel中超级表和普通表的相互转换

1、普通表转换为超级表 选中表内任一单元格,然后按CtrlT,确认即可。 2、超级表转换为普通表 选中超级表内任一单元格,右键,表格,转换为区域,确定即可。 这时虽然已经变成了普通表,但样式没有…

案例 - 拖拽上传文件,生成缩略图

直接看效果 实现代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>拖拽上传文件</title>&l…

Node.js |(七)express案例实践:记账本 | 尚硅谷2023版Node.js零基础视频教程

文章目录 &#x1f4da;基本结构搭建&#x1f4da;响应静态网页&#x1f4da;获取表单数据&#x1f4da;借助lowdb保存账单信息&#x1f4da;完善成功提醒&#x1f4da;账单列表&#x1f4da;删除账单&#x1f4da;final 学习视频&#xff1a;尚硅谷2023版Node.js零基础视频教程…

DAIR-V2X-V 3D检测数据集 转为Kitti格式 | 可视化

本文分享在DAIR-V2X-V数据集中&#xff0c;将标签转为Kitti格式&#xff0c;并可视化3D检测效果。 一、将标签转为Kitti格式 DAIR-V2X包括不同类型的数据集&#xff1a; DAIR-V2X-IDAIR-V2X-VDAIR-V2X-CV2X-Seq-SPDV2X-Seq-TFDDAIR-V2X-C-Example: google_drive_linkV2X-Seq-…

关于最新版本Burp Suite可以在哪个基本类别中找到控制其更新行为的“更新”子类别

关于最新版本Burp Suite可以在哪个基本类别中找到控制其更新行为的“更新”子类别&#xff1f; In which base category can you find the "Updates" sub-category, which controls the Burp Suite update behaviour? 是Suite而不是Misc If your answer to this q…

IDEA重新choose source

大概现状是这样&#xff1a;之前有个工程&#xff0c;依赖了别的模块基础包&#xff0c;但当时并没有依赖包的源码工程&#xff0c;因此&#xff0c;通过鼠标左键点进去&#xff0c;看到的是jar包里的class文件&#xff0c;注释什么的都去掉了的&#xff0c;不好看。后面有这个…

qml添加滚动条

import QtQuick.Controls 2.15ScrollBar.vertical: ScrollBar {visible: flick1.contentHeight > flick1.heightanchors.right: parent.rightanchors.rightMargin: 40width: 10active: truecontentItem: Rectangle {radius: 6opacity: 0.5color: "#7882A0"} }

在字节跳动做了4年软件测试,9月无情被辞,细思极恐

​【文章末尾个大家留下了大量的福利】 某不知名 985 的本科&#xff0c;18年毕业加入字节&#xff0c;以“缩减成本”的名义无情被裁员&#xff0c;之后跳槽到了华为&#xff0c;一直从事软件测试的工作。之前没有实习经历&#xff0c;算是4年的工作经验吧。 这4年之间完成了…

大直径测径仪 一种高效且高精的大口径外径检测仪器

摘要 大直径测径仪是一种高效高精的大口径产品外径检测仪器&#xff0c;可适用于连续轧制无缝管材、皮尔格轧制无缝管材、直缝焊管、螺旋焊管等的在线检测。还可根据不同的产品规格调节测量范围。 引言 一些大口径的管材、棒材并不罕见&#xff0c;深埋地下的排水管道、输送管道…

企业级低代码开发,科技赋能让企业具备“驾驭软件的能力”

科技作为第一生产力&#xff0c;其强大的影响力在各个领域中都有所体现。数字技术&#xff0c;作为科技领域中的一股重要力量&#xff0c;正在对传统的商业模式进行深度的变革&#xff0c;为各行业注入新的生命力。随着数字技术的不断发展和应用&#xff0c;企业数字化转型的趋…