我试图从Git diff中排除一个文件(db/ irrelevance .php),我已经尝试将一个文件放在db子目录中,名为.gitattributes,并使用行irrelevance .php -diff 我还尝试创建了一个名为.git/info/attributes的文件,其中包含db/无关的。php。

在所有情况下,db/ irrelevance .php文件都作为Git二进制补丁包含在diff中。我想要的是由diff命令忽略对该文件的更改。我做错了什么?


当前回答

你也可以使用patchutils程序集合的filterdiff程序来排除diff的某些部分。例如:

git diff | filterdiff -p 1 -x db/irrelevant.php

其他回答

这种方法比公认的答案更短。

git diff 987200fbfb 878cee40ba -- ':!*.cs'

要了解更多关于不同的包含/排除可能性的信息,请阅读另一篇文章

我做以下事情:

git add *pattern_to_exclude*
git diff
git reset HEAD .

我知道这不是一个优雅的解决方案,它有时不能被使用(例如。如果你已经把东西准备好了),但它不需要输入复杂的命令就能完成任务

你也可以使用patchutils程序集合的filterdiff程序来排除diff的某些部分。例如:

git diff | filterdiff -p 1 -x db/irrelevant.php

简单的回答

git diff ':!db/irrelevant.php'

只是‘:!在你的diff命令后<path>'。diff命令可以像你喜欢的那样复杂,你可以使用通配符,如*.min.js或添加多个排除(空格分隔引号块)如果你愿意。

您可以使用no op命令设置一个自定义diff驱动程序,并将其分配给那些应该忽略的文件。

使用此命令创建一个特定于存储库的差异驱动程序

git config diff.nodiff.command /bin/true

或者是你所有的,全球回购。

(如果MacOS中不存在/bin/true,则可以使用/usr/bin/true或echo)。

然后,将新的diff驱动程序分配给.git/info/attributes文件中你想忽略的那些文件。

irrelevant.php    diff=nodiff

如果这个状态应该与其他开发人员共享,你可以使用.gitattributes而不是.git/info/attributes,并与你的同事共享git config命令(通过文档文件或其他东西)。