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://xiahunao.cn/news/2806167.html

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

相关文章

软考-中级-系统集成2023年综合知识(三)

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 软考中级专栏回顾 专栏…

【PythonGIS】基于Python融合矢量数据(多面合一)

之前发过使用批量合并矢量数据的文章&#xff1a;【Python&GIS】基于Python批量合并矢量数据&#xff0c;正好前段时间有需求把矢量数据进行融合&#xff0c;然后就编了一段融合矢量数据的代码。今天就和大家分享一下如何使用Python对矢量数据实现融合的操作。 1.定义 首先…

金南瓜SECS/GEM如何添加工程?

公开资料皆为是2、3年前版本 编译SecsEquip.dll依赖库 ① 打开示例程序中的SecsEquip项目 ② 选中SecsEquip工程&#xff0c;右键选择属性 如果没有“解决方案资源管理器”页面&#xff0c;可以从菜单的“视图”->“解决方案资源管理器”打开 ③ 选择跟设备相同的NET版本…

This dependency was not found解决方法

问题如上(前端代码)&#xff0c;我是引用js文件出的问题&#xff0c;无法找到api/userManage模块。 解决&#xff1a;没感觉哪有问题&#xff0c;把后面加了个/&#xff0c;就解决了&#xff0c;代表src目录&#xff0c;应该是目录和目录之间应该有/作为分割&#xff1a;

python 提取PDF文字

使用pdfplumber&#xff0c;不能提取扫描的pdf和插入的图片。 import pdfplumberfile_path rD:\UserData\admindesktop\官方文档\1903_Mesh-Models-Overview_FINAL.pdf with pdfplumber.open(file_path) as pdf:page pdf.pages[0]print(page.extract_text()) # 所以文字prin…

DIcom调试Planar configuration

最近和CBCT组同事调dicom图像 这边得图像模块老不兼容对方得dicom文件。 vtk兼容&#xff0c;自己写得原生解析不兼容。 给对方调好了格式&#xff0c;下次生成文件还会有错。 简单记录下&#xff0c;日后备查。 今天对方又加了 个字段&#xff1a;Planar configuration 查…

koa项目部署云服务器(部署本地虚拟机中)

文章目录 一、服务器安装Node、MySQL1.1. 安装Node.js1.2. 安装MySQL1.3.配置MySQL1.4. 数据库迁移 二. 部署Node项目2.1. 代码托管到Git仓库&#xff08;选做&#xff09;2.2. 代码clone到服务器&#xff08;选做&#xff09;2.3. VSCode中打开代码&#xff08;推荐&#xff0…

【二十七】【C++】二叉树练习

606. 根据二叉树创建字符串 给你二叉树的根节点 root &#xff0c;请你采用前序遍历的方式&#xff0c;将二叉树转化为一个由括号和整数组成的字符串&#xff0c;返回构造出的字符串。 空节点使用一对空括号对 "()" 表示&#xff0c;转化后需要省略所有不影响字符串与…

集成TinyMCE富文本编辑器

若依的基础上集成TinyMCE富文本编辑器 前端bootstrap TinyMCE官网链接 TinyMCE所需静态资源下载链接 开源项目-若依链接 将TinyMCE静态资源包放入项目中&#xff1b; 代码引入css&#xff1a; <!-- 引入TinyMCE CSS --><link th:href"{/ajax/libs/tinymce/j…

抖音视频评论数据提取软件|抖音数据抓取工具

一、开发背景&#xff1a; 在业务需求中&#xff0c;我们经常需要下载抖音视频。然而&#xff0c;在网上找到的视频通常只能通过逐个复制链接的方式进行抓取和下载&#xff0c;这种操作非常耗时。我们希望能够通过关键词自动批量抓取并选择性地下载抖音视频。因此&#xff0c;为…

什么是调制比

一般情况下&#xff0c;调制波和载波的最大幅值是不一样的。 正弦波的最大幅值低于三角波的最大幅值。 这样做的目的就是产生最大占空比&#xff08;2000W逆变器中最大占空比是80%&#xff09; 调制波就是正弦波的最大幅值比三角载波的最大幅值 问题1 为什么调制波要小于1&…

Oracle不能启动,提示设备空间不足,实际上是信号量不够(ORA-27300,ORA-27301,ORA-27302)

我的一个客户的Oracle数据库不能启动&#xff0c;出现下面的提示&#xff1a; ORA-27154: post/wait create failed ORA-27300: OS system dependent operation:semget failed with status: 28 ORA-27301: OS failure message: No space left on device ORA-27302: failure oc…

邮件发送/接收过程分析、常见邮箱sport/dport列举、检测规则开发思路分析

一、邮件发送和接收过程分析 &#xff08;转载自&#xff1a;邮件的发送和接收过程——STMP、POP、IMAP、MIME_当收件人接收电子邮件时自己的邮件服务器通过什么收文件-CSDN博客&#xff09; 电子邮件发送协议 是一种基于“ 推 ”的协议&#xff0c;主要包括 SMTP &#xff1…

代码随想录算法训练营第60天 | 647.回文子串 + 516.最长回文子序列 + 动态规划总结篇

今日任务 647. 回文子串 516.最长回文子序列 动态规划总结篇 647.回文子串 - Medium 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串…

1.openEuler概述及安装指南(一)

openEuler OECA认证辅导&#xff0c;标红的文字为学习重点和考点。 1.openEuler简介 openEuler是一款面向全球的开源操作系统 支持ARM、X86等多种处理器&#xff0c;能够充分释放计算芯片的潜能&#xff1a;高效、稳定、安全 适用于数据库、大数据、云计算、人工智能等多种应用…

maven3旧版本的下载地址(含新版本)

因为现有的3.8版本与IDEA不兼容&#xff0c;我需要下载3.6版本&#xff0c;但是官网的位置非常隐蔽&#xff0c;找了很多资料才看到。故记录一下。 第一步 进入网址&#xff0c;选择需要的版本 Index of /dist/maven/maven-3 第二步 选择binaries 第三步 选择zip文件下载就可…

Seata Server 服务搭建

概述 Seata 分布式事务需要 Seata Seaver 支持&#xff0c;Seata Server在 架构中扮演着 事务管理器的角色。Seata 服务需要往 Nacos 注册中心注册、以及读取配置文件&#xff0c;因此 Seata 启动前需要部署 Nacos 环境。 安装包下载 下载地址: https://download.csdn.net/dow…

【ArcGIS】利用高程进行坡度分析:区域面/河道坡度

在ArcGIS中利用高程进行坡度分析 坡度ArcGIS实操案例1&#xff1a;流域面上坡度计算案例2&#xff1a;河道坡度计算2.1 案例数据2.2 操作步骤 参考 坡度 坡度是地表单元陡缓的程度&#xff0c;通常把坡面的垂直高度和水平距离的比值称为坡度。 坡度的表示方法有百分比法、度数…

如何快速导出vercel project中的环境变量

我在vercel中集成了某些插件或者链接了数据库&#xff0c;要如何快速的导出这些环境变量呢&#xff1f; 具体方法如下&#xff1a; npm i -g vercelvercel linkvercel env pull .env.local首先是安装vercel然后登录vercel 最后拉取环境变量到.env.local

虚拟机的四种网络模式对比

nat网络地址转换 nat网络 桥接 内网模式 仅主机