【发布时间】:2017-09-12 20:45:10
【问题描述】:
git 认为a .json file 的两个版本不同,但实际上它们的数据不是:
@@ -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 文件的这种差异?
注意:
以下代码from Tomasz Wegrzanowski's Blog:
echo "*.json diff=json" >> .gitattributes
git config diff.json.textconv json_pp
无法正常工作并导致 git diff 挂起
【问题讨论】:
-
这个
.json文件是否以某种方式自动生成并且元素的顺序是基于自动生成的动态的? -
没错,就是
npm生成的package-lock.json文件。 -
我认为您需要阅读以下内容:stackoverflow.com/questions/44206782/…,您正试图避免跟踪此文件上的这些更改,但对于所有其他帐户,您应该跟踪它...跨度>
-
如果您考虑一下,git 旨在跟踪文件的更改(显然),您可以排除您不关心的文件,但
package-lock.json是您关心的文件。如您所知,NPM 可能会根据依赖关系重新组织所需包的列表(即取决于您的设置和其他包,它可能认为应该首先需要JSONStream)。你会想要跟踪这个变化。 -
如果不是
Object,而是Array,那将是正确的。{a: 1, b: 2}等于{b: 2, a: 1},其中[1, 2]与[2, 1]不同。这就是为什么这些版本完全相同。
标签: json git diff package-lock.json