首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止git为JSON文件生成假差异?

如何防止git为JSON文件生成假差异?
EN

Stack Overflow用户
提问于 2017-09-12 20:45:10
回答 2查看 1.6K关注 0票数 3

git认为文件的两个版本是不同的,但实际上它们的数据不是:

代码语言:javascript
复制
@@ -469,9 +479,9 @@
       "integrity": "sha1-+GzWzvT1MAyOY+B6TVEvZfv/RTE=",
       "dev": true,
       "requires": {
+        "JSONStream": "1.3.1",
         "combine-source-map": "0.7.2",
         "defined": "1.0.0",
-        "JSONStream": "1.3.1",
         "through2": "2.0.3",
         "umd": "3.0.1"
       }

我们如何让git忽略JSON文件的这种差异?

注意:

以下代码来自Tomasz Wegrzanowski的博客

代码语言:javascript
复制
echo "*.json diff=json" >> .gitattributes
git config diff.json.textconv json_pp

不工作,导致git diff挂起。

EN

回答 2

Stack Overflow用户

发布于 2019-04-11 20:39:50

配置挂起是因为json_pp不接受文件名作为参数。这意味着在您的配置中,json_pp等待std-输入流上的输入,并且由于您没有交付git挂在我的gitconfig中的任何输入流,所以我实现了如下json_pp:

代码语言:javascript
复制
[diff "json"]
         textconv = "cat \"$1\" | json_pp --json_opt=canonical,pretty" 

对我来说这很好。如果您愿意,可以将--json_opt值更改为您最喜欢的输出格式。但是,如果键的顺序改变了,这个配置仍然会显示出不同的情况。

在git版本2.16.1.windows.1中测试

票数 2
EN

Stack Overflow用户

发布于 2022-09-14 08:27:59

git认为两个版本的.json文件是不同的,但实际上它们的数据不是。

他们是不同的,文字上的不同。根据设计,这是git版本文件的唯一方式。

我们如何让git忽略JSON文件的这种差异?

你不能。您所引用的链接仅涉及在使用git-diff工具查看JSON文件时转换JSON文件。

广泛接受的提交JSON和其他类似配置文件(xml等)的做法。机器生成的数据通常是通过强制排序顺序生成的。在您的示例中,您似乎使用了一个工具来进行区分大小写的排序,而该文件最初是以不区分大小写的方式排序的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46185051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档