Mic*_*ael 202 git diff git-diff
我试图db/irrelevant.php从Git diff中排除一个文件().我试图把在一个文件db名为的子目录.gitattributes与行irrelevant.php -diff
,我也尝试创建一个名为.git/info/attributes包含db/irrelevant.php.
在所有情况下,该db/irrelevant.php文件都作为Git二进制补丁包含在diff中.我想要的是diff命令忽略对该文件的更改.我究竟做错了什么?
Mr_*_*s_D 283
Omg,驱动程序和awk排除一个糟糕的文件?从git 1.9开始,您可以:
git diff -- . ':(exclude)db/irrelevant.php' ':(exclude)db/irrelevant2.php'
Run Code Online (Sandbox Code Playgroud)
啊,优雅!请参阅@torek 的引用答案和详细解答
Kur*_*tal 61
您可以使用no op命令设置自定义diff驱动程序,并将其分配给应忽略的文件.
使用此命令创建特定于存储库的diff驱动程序
git config diff.nodiff.command /bin/true
Run Code Online (Sandbox Code Playgroud)
或者你的所有回购--global.
(如果/bin/true在MacOS中不存在,替代品将使用/usr/bin/true或echo).
然后,将新的diff驱动程序分配给您要在.git/info/attributes文件中忽略的文件.
irrelevant.php diff=nodiff
Run Code Online (Sandbox Code Playgroud)
如果这个状态应该与其他开发人员共享,那么你可以使用.gitattributes而不是与同伴.git/info/attributes共享git config命令(通过文档文件或其他东西).
Szi*_*fer 34
您还可以使用patchutils程序集的filterdiff程序来排除diff的某些部分.例如:
git diff | filterdiff -p 1 -x db/irrelevant.php
Run Code Online (Sandbox Code Playgroud)
dls*_*sso 33
git diff ':!db/irrelevant.php'
它就':!<path to file>'在您的 diff 命令之后。diff 命令可以像您喜欢的那样复杂,如果需要,您可以使用通配符*.min.js或添加多个排除(空格分隔带引号的块)。
Chi*_*nke 25
此方法比接受的答案短.
git diff 987200fbfb 878cee40ba --stat -- ':!*.cs'
Run Code Online (Sandbox Code Playgroud)
有关不同包含/排除可能性的更多信息,请阅读其他帖子
Ben*_*oux 17
这个单行解决方案不需要其他工具/下载:
git diff `git status -s |grep -v ^\ D |grep -v file/to/exclude.txt |cut -b4-`
Run Code Online (Sandbox Code Playgroud)
file/to/exclude.txt当然,您要排除的文件名称在哪里.
编辑:信用ksenzee修复已删除的文件打破差异.
jas*_*ard 11
git diff 接受一个可选的排除
git diff -- ":(exclude)thingToExclude"
Run Code Online (Sandbox Code Playgroud)
git diff -- ":(exclude)*/thingToExclude/*"
Run Code Online (Sandbox Code Playgroud)
git diff -- ":(exclude)*/$1/*.png"
Run Code Online (Sandbox Code Playgroud)
.bash_profile或.zshrcgde() {
# git diff exclude files or folders
# usage:
# gde fileOrFolderNameToExclude
git diff -- ":(exclude)*/$1/*"
}
Run Code Online (Sandbox Code Playgroud)
use*_*608 10
KurzedMetal真的很好的回答我需要做什么,这是能够看到文件已经改变,但不能生成差异,这在我的情况下可能是巨大的.
但我的一位同事提出的方法更为简单,对我有用:
.gitattributes在要忽略的文件所在的目录中添加文件,其中git diff包含以下内容:
file-not-to-diff.bin -diff
仍然可以git status"查看"文件是否更改.git diff还会"看到"文件发生了变化,但它不会生成diff.
这.bin扩展了该示例中的文件是经过深思熟虑的.我确实知道这是二进制文件的git的默认行为,它不需要特殊处理.gitattributes.但在我的情况下,这些文件被git和"file"实用程序识别为文本文件,这就是诀窍.
基于现有答案,如果您想排除文件模式,无论它在目录中的哪个位置,请使用相应的git pathspec值**:
git diff -- ':!**/yarn.lock'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67104 次 |
| 最近记录: |