如何在Git仓库中正确存储压缩JSON,实现查看美化、克隆返回压缩版
实现Git仓库存储美化JSON、本地工作区保留压缩JSON的方案
实现原理是利用Git的**自定义过滤器(filter)**机制,和working-tree-encoding的转码逻辑一致,分为提交时的clean转换和检出时的smudge转换两个阶段:
前置依赖
首先安装跨平台JSON处理工具jq,用于JSON的美化和压缩操作。
具体配置步骤
- 第一步:配置Git过滤器规则
执行以下命令配置全局过滤器(如果仅需当前项目生效,去掉命令中的--global参数即可):# smudge规则:检出文件时,将仓库中的美化JSON转为压缩格式写入工作区 git config --global filter.json-minify.smudge "jq -c ." # clean规则:提交文件时,将工作区的压缩JSON转为美化格式存入Git仓库 git config --global filter.json-minify.clean "jq ." - 第二步:配置项目.gitattributes规则
在项目根目录新建.gitattributes文件,添加以下内容(如果仅需处理特定JSON文件,把*.json替换为对应文件名即可):
其中*.json filter=json-minify diff=jsondiff=json用于保证Git可以正确识别为JSON格式,支持逐行变更对比。
效果验证
- 提交压缩JSON文件后,执行
git show、git diff命令,或者在GitHub/GitLab等平台的网页端查看,都会展示美化后的JSON格式,支持逐行变更查看 - 执行
git clone或者git checkout操作时,本地工作区自动生成的是原始压缩JSON文件,完全符合需求。
注意事项
所有协作使用该仓库的开发者都需要配置上述过滤器规则,你可以将配置步骤添加到项目README中说明。
内容的提问来源于stack exchange,提问作者petRUShka
相关产品推荐
相关产品推荐

