Git diff Word 文档

前言

前段时间用 nodeJS 写了一个提交代码的工具,开发过程中在认证部分遇到了一些小问题,于是就想看看官方的文档中有没有什么说明之类的,没想到文档中的内容十分丰富,除了解释了 git 相关的原理外,还学到了很多有用的东西,比如本文内容:通过 git diff word 文档。

在看文档前,我还从未想过 word 这类的二进制文件也是有办法通过 git 进行 diff 的,在之前一直认为是无解的问题。

git 本身在比较 word 文档一类的二进制文件时只会显示类似下面这样的结果:

Pasted image 20231107211118.png

git 比较二进制文件,说起来也简单,虽然 git 本身没有办法进行比较,但是你可以告诉 git 如何将二进制转化为文本格式,如此便能通过 git 进行比对了。

docx2txt

Docx2txt是一个基于Perl的命令行实用程序,用于将 Microsoft docx 文档转换为格式合理的文本文件,并进行适当的字符转换,我们可以通过它,使其在进行 git diff 时转换 word 文档。

安装 docx2txt

Docx2txt 下载地址:https://sourceforge.net/projects/docx2txt

安装过程并不复杂,在安装包中提供了 INSTALL 说明文件,提供了各类需求的安装说明,如果每没有特殊需求,linux/mac 用户在该目录下直接执行 make 进行安装即可

Pasted image 20231107214333.png

make 命令会默认安装到 /usr/local/bin 路径下。

Pasted image 20231107214740.png

使用 docx2txt 命令行工具

我们这里尝试使用 docx2txt 解析一下 docx 文档,通过 docx2txt.pl <word 文件名> 生成一个 同名.txt 的文件,这个文件的内容就已经是解析好的 word 文本。

Pasted image 20231107223824.png

配置全局可执行环境

首先创建一个 docx2txt 的脚本文件,将脚本的输出结果包装秤 Git 识别的格式,最简单的方式,是将这个文件直接放到可执行路径下,比如和 dox2txt.pl 相同目录下:/usr/local/bin ,然后添加以下内容。

#!/bin/bash 
docx2txt.pl "$1" -

添加完成后,使用 chomd a+x docx2txt 命令,给文件添加可执行权限。

我个人不喜欢放到 /usr/local/bin 下,一般会创建一个 shell 的目录,将这个目录挂载到环境变量中。

注:如果你没有自定义目录的需求,可以跳过下面这段

# 在根目录下创建自定义 shell 的目录
sudo mkdir /shell# 将目录写入环境变量
sudo vim ~/.bash_profile
# 以下是写入内容
PATH="/shell:$PATH"# 退出文件编辑后,执行 source 命令,使其生效
source ~/.bash_profile

.bash_profile 实际添加如最后一行:

Pasted image 20231107225114.png

配置完成后,将这个文件扔到 /shell 目录下即可。

配置 Git

安装好 docx2txt 后,我们接下来就需要配置 Git 了。

接下来,在需要进行转换的仓库中添加 .gitattributes 文件,并在文件中添加以下配置

.docx diff=word

配置 diff word 使用 docx2txt 进行比较,这里只针对单个仓库生效,如果想要全局生效加入 --global

git config diff.word.textconv docx2txt

仅仅需要这两步, git 就配置好了,接下来我们测试一下是否可以正常比较了。

测试

此时再执行 git diff 已经可以正常比对 word 文档了

Pasted image 20231107231245.png

结语

虽然这是一篇 git diff word 文档的文章,但究其原理终究是将二进制转换成正常的文本,所以类似的如 excel, pdf 等等二进制文件只要找到相应的解析器,也可以进行比对处理。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MybatisPlus--03--IService、ServiceImpl

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1. IService接口1.1 IService、ServiceImpl 接口的使用第一步&#xff1a;实现basemapper接口第二步&#xff1a;编写service类第三步&#xff1a;编写serviceImpl第…

Spring中的ApplicationContext.publishEvent

简单理解 其实就是监听处理。比如找工作平台上&#xff0c;雇主 employer 发布自己的雇佣条件&#xff0c;目的是平台中有符合条件的求职者时&#xff0c;及时向雇主推荐。求职者发布简历&#xff0c;当平台发现某个求职者比较符合条件&#xff0c;就触发被动&#xff0c;推荐…

AES算法框架

AES算法框架 在AES中,明文和秘钥都用“状态(State)”表示。 (1)明文State。明文State可以用二维矩阵表示,该数组为4行,Nb列,设4 X Nb。数组每个元素为1个字节,即为2个十六进制数。 Nb=数据块长度/32。当数据块长128时,Nb=4;当数据块长192时,Nb=6;当数据块长256时…

数据结构-Queue队列

一,队列的简单认识 队列也是一种线性数据结构,与栈不同的是,它只能从一端添加元素,从另一端取出元素.定义了一端,另一端也就确定了. (当然还有一个特殊的双向队列LinkedList除外,它既可以从队首添加元素,也可以移除元素,队尾也是一样的,既可以添加元素,也可以移除元素) 二,队…

在项目中使用CancelToken选择性取消Axios请求

Axios 提供了 CancelToken 类来创建取消标记。取消标记实际上是一个包含 token 标记和 cancel 方法的对象。 1、基本使用方法 const CancelToken axios.CancelToken; const source CancelToken.source();axios.get(/user/12345, {cancelToken: source.token }).catch(functi…

拓扑空间简介

目录 介绍集合论与映射映射相关定义映射&#xff08;map&#xff09;映射的一种分类&#xff1a;一一的和到上的 拓扑空间背景介绍开子集开子集的选择 拓扑拓扑空间常见拓扑拓扑子空间同胚其他重要定义 开覆盖紧致性有限开覆盖紧致性 R R R的紧致性 习题 介绍 这是对梁灿彬的《…

【MIT-PHP-推荐】imi-ai 是一个 ChatGPT 开源项目

mi-ai 是一个 ChatGPT 开源项目&#xff0c;支持聊天、问答、写代码、写文章、做作业等功能。 项目架构合理&#xff0c;代码编写优雅&#xff0c;简单快速部署。前后端代码完全开源&#xff0c;不管是学习自用还是商用二开都很适合。 本项目现已支持 ChatGPT 聊天 AI 和 Emb…

MobaXterm连接VirtualBox虚拟机

目录 1.下载MobaXterm 2.获取连接配置 3.mobaXterm连接虚拟机 4.更好的方案 1.下载MobaXterm 据说MobaXtrem是远程终端的超级全能神器,官网下载地址&#xff1a;MobaXterm free Xserver and tabbed SSH client for Windows 选择适合你的版本&#xff1a;一个是Home Editi…

Normalization,LayerNormalization和BatchNormalization

前言 假设我们的损失函数在空间中是一个曲面&#xff0c;这个曲面可以被我们人为的切出等高线&#xff0c;在采用梯度下降算法的时候&#xff0c;我们沿着梯度反方向迭代&#xff08;梯度方向与等高线垂直&#xff09;&#xff0c;到最后我们会抵达上图曲面的最低点。 在上面的…

学习python的第6天,痛苦焦虑的开始是期待

小号加了她的网易云音乐小号&#xff0c;成为了她的粉丝之一&#xff0c;收到她的私信回复之后&#xff0c;便又开始期待新的回复了&#xff0c;所以嘛&#xff0c;痛苦总是从开始期待开始的............. 昨天学习了python的逻辑控制之 if 和比较 .__eq__(a) 而且在最后顺带…

【开源】SpringBoot框架开发婚恋交友网站

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 会员管理模块2.3 新闻管理模块2.4 相亲大会管理模块2.5 留言管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 会员信息表3.2.2 新闻表3.2.3 相亲大会表3.2.4 留言表 四、系统展示五、核心代码5.…

又燃起来了!临深惠湾折扣力度持续铺排

又火了&#xff01; 6月&#xff0c;房企半年报出炉&#xff01; 房企备战“618”&#xff0c;持续安排优惠。 不排除这两天会有更大的宣传&#xff01; 房街团队收集了该市117处待售房产的折扣清单。 需要的粉丝可以扫描底部二维码获取。 上一篇公布了林深汇湾的优惠名单后…