执行git diff -- ':(exclude)package-lock.json'没有任何效果

10

我想进行一次diff操作,但不包括package-lock.json文件,因为它很大并且是一个生成的文件,对我来说没有什么有趣的内容。

我尝试了以下两种方式:

git diff -- ':(exclude)package-lock.json'

git diff -- ':!package-lock.json'

但是它没有任何输出。我做错什么了吗? 我正在运行Git 2.21.0版本。

我无法重现这种行为。你确定除了package-lock.json之外,文件中还有未暂存的更改吗? - Mark Adelsberger
是的,我有6个未暂存的文件,就像git status所显示的那样。 - Olivvv
我执行了 git status 命令,它显示了所有未提交的更改,包括 package-lock.json 文件。 - Olivvv
2个回答

17
在使用排除路径规范之前,您需要列出不包括在内的路径。例如点(.)或神奇根目录:/
git diff -- . ':(exclude)package-lock.json'
git diff -- . ':!package-lock.json'

谢谢。我明天回到工作岗位后会尝试一下。 - Olivvv
实际上,我重新测试了一下,发现了一些非常不直观的东西:必须是:git diff -- . ":(exclude)package-lock.json"。用单引号将无法工作,并会显示包括package.json在内的每个文件的差异。 - Olivvv
什么操作系统?Windows?在Unix/Linux/MacOS中,引号类型之间没有太大的区别。 - phd
嗯,我觉得答案就在你的问题里了...它是Windows 10。 - Olivvv
是的,我明白了。我不是一个w32用户,所以我很少记得这个区别。 - phd
就像生活在遥远的孤岛上一样。 - Olivvv

8

如果你不想每次运行git diff时都要添加参数,你可以在存储库的根目录下添加一个.gitattributes文件,然后在其中添加以下代码(实际上是两行,但第一行是解释性注释,可以选择性省略):

#exclude package-lock from git diff
package-lock.json -diff

在添加该文件后,您将能够执行常规的git diff命令,无需额外的参数,而且也不必查看所有 package-lock.json 的差异。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接