Git XL 使用详解:如何追踪 Excel VBA 代码的每一行变更

Git XL 使用详解:如何追踪 Excel VBA 代码的每一行变更

【免费下载链接】git-xl Git extension: Makes git-diff work for VBA in Excel workbooks (xls* file types) 【免费下载链接】git-xl 项目地址: https://gitcode.com/gh_mirrors/gi/git-xl

Git XL 是一款开源的 Git 命令行扩展,让 git diff 能够直接解析 Excel 工作簿中的 VBA 宏代码。它无需打开 Excel 即可读取工作簿文件,帮助你像追踪普通源代码一样,精确追踪 Excel VBA 代码的每一行变更。

Git XL 解决了什么问题?

如果你把 Excel 文件放进 Git 仓库,运行 git diff 时只会得到一行冷冰冰的提示:

Binary files a/Book1.xlsm and b/Book1.xlsm differ

对维护 VBA 宏的开发者来说,这几乎等于没有信息——到底是哪个模块、哪一行被改了?改之前是什么?Git XL 正是为解决这个痛点而生:安装之后,Git 就能把 Excel 里的 VBA 代码当作普通源码文件来对比,直接输出逐行的增删内容。✨

支持哪些 Excel 文件格式?

Git XL 覆盖了常见的 9 种 Excel 文件格式,主流场景基本全覆盖:

格式说明
xls / xltExcel 97-2003 工作簿 / 模板
xla / xlam加载项 / 启用宏的加载项
xlsx / xlsmExcel 2007+ 工作簿 / 启用宏的工作簿
xlsb二进制格式工作簿
xltx / xltm模板 / 启用宏的模板

这些扩展名在 src/cli.py 中以 FILE_EXTENSIONS 常量统一定义。

Git XL 安装教程:全局与本地两种模式

Git XL 使用 Python 编写,Windows 平台提供预编译的二进制安装程序,安装完成后再做一步 Git 配置即可。🛠️

全局安装(每台机器一次)

先通过 Windows 二进制安装程序安装 Git XL,然后在命令行执行:

git xl install

这条命令会把 Excel diff 器注册到全局 Git 配置中,之后所有仓库都能对 Excel 文件做 VBA 级对比。

按仓库本地安装

如果只想在某个仓库生效,在仓库根目录下执行:

git xl install --local

配置将写入该仓库自己的 .gitattributes.gitignore,不影响其他项目。

安装过程实际做了什么?

Git XL 的安装非常"克制",一共只改三处配置:

  1. Git 配置:注册 diff.xl.command,指向 git-xl-diff.exe 差异器
  2. .gitattributes:为 9 种 Excel 格式写入 *.xls diff=xl 等规则,告诉 Git "这类文件请用 xl 差异器"
  3. .gitignore:写入 ~$*.xls 等规则,自动忽略 Excel 打开文件时生成的临时锁文件(~$ 开头的文件不该被提交)

相关逻辑可以在 src/cli.pyInstaller 类中阅读到,安装/卸载行为也有对应的单元测试 src/tests/test_cli.py 保障。

实战:第一次查看 Excel VBA 代码差异

配置完成后,对包含 VBA 代码的工作簿运行 git diff,输出会是这样:

diff --xl a/Book1.xlsb b/Book1.xlsb
--- a/Book1.xlsb/VBA/Module/Module1
+++ b/Book1.xlsb/VBA/Module/Module1
@@ -1,4 +1,4 @@
 Option Explicit
 Public Function Version() As String
-   Version = "v1.0"
+   Version = "v1.1"
End Function

📊 一目了然:Module1 模块中版本号从 v1.0 改成了 v1.1。在 Windows 终端中,新增行会以绿色、删除行以红色高亮显示(由 colorama 实现);如果新增或删除了整个 VBA 模块,diff 会完整展示该模块的全部代码。

Git XL 工作原理简介

Git XL 的差异器 git-xl-diff.exe 的核心实现只有两个文件,值得了解一下:

  • src/diff.py:差异器本体。它利用 oletools 库中的 VBA_Parser 直接从工作簿文件中提取所有 VBA 宏(完全不需要 Excel 环境),再借助 Python 标准库 difflib 生成标准的 unified diff,并逐模块处理"新增、修改、删除"三种情况
  • src/cli.py:命令行入口,负责 install / uninstall / env / version 等命令,以及 Git 配置的读写

项目还在 src/tests/ 目录下附带了示例工作簿 Book1.xlsb,方便你搭建自己的测试场景。

常用命令速查表

命令作用
git xl install全局安装(注册 Excel diff 器)
git xl install --local仅在当前仓库本地安装
git xl uninstall全局卸载,撤销所有配置
git xl uninstall --local仅撤销当前仓库的本地配置
git xl env查看当前 Git XL 环境信息
git xl version显示版本号
git xl help查看完整帮助

⚡ 安装和卸载都是可逆的:uninstall 会干净地移除 diff.xl 配置及 .gitattributes / .gitignore 中由 Git XL 写入的规则,不会留下垃圾配置。

如何从源码构建 Git XL?

如果你想自己编译 Windows 可执行文件,过程也很直接:

  1. 克隆源码仓库:https://gitcode.com/gh_mirrors/gi/git-xl
  2. 创建 Python 虚拟环境,按 requirements.txt 安装依赖(colorama、oletools、pyinstaller)
  3. 在仓库根目录运行构建脚本 scripts/windows/build.bat,由 PyInstaller 打包出 exe
  4. Windows 安装程序基于 Inno Setup 生成,脚本位于 scripts/windows/inno-setup-git-xl-installer.iss

详细构建说明可参考仓库中的 BUILDING.md

总结

Git XL 用极小的成本解决了"Excel VBA 代码无法在 Git 中做代码级对比"这一长期痛点:一条 git xl install 命令,即可让 git diff 逐行展示 Excel 工作簿中 VBA 宏的每一次变更,同时自动忽略 Excel 临时文件。如果你的团队在用 Git 管理含 VBA 的 Excel 模板、报表工具或加载项,这个免费的开源扩展值得立即尝试。(小知识:Git XL 早期的名字叫 "git-xltrail"。)

【免费下载链接】git-xl Git extension: Makes git-diff work for VBA in Excel workbooks (xls* file types) 【免费下载链接】git-xl 项目地址: https://gitcode.com/gh_mirrors/gi/git-xl

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值