我正在尝试根据从“git diff”中排除文件的答案来适应
脚本解决方案如下:
实际上调用了
--stat
标志,但失败了。被接受的回答(创建驱动程序)似乎仅适用于Unix系统(重定向到/bin/true
,无论这意味着什么),而且它会创建一个驱动程序并将其永久地分配给该文件;而我正在寻找一个开关来暂时禁用某个文件(或者某些文件)的差异。脚本解决方案如下:
git diff `git status -s |grep -v ^\ D |grep -v file/to/exclude.txt |cut -b4-`
实际上调用了
git status
并编辑其输出 - 而我想要的是指示git diff
本身在计算简单的--stat
(仅有变更行数)时忽略某些文件。我查看了git-diff
文档,但似乎找不到这样的选项。有人能帮帮我吗?$ git --version
git version 2.6.1.windows.1
git diff --stat 307-first-commit -- :/ ':(exclude,top)Mopy/Docs' ':(exclude,top)Mopy/bash/images'
,其中 "307-first-commit" 是一个标签。这个命令:git diff --stat 307-first-commit :/: :!/Mopy/Docs
不起作用(输出 "bash: !/Mopy/Docs: event not found")。这个命令git diff --stat 307-first-commit :/: :!/:Mopy/Docs
也失败了,输出 "bash: !/: event not found"。 - Mr_and_Mrs_Devent not found
是因为bash试图将!
用于自己的目的。单引号或前缀反斜杠(但不是双引号)将保护!
免受shell的影响。请注意,一般情况下shell还喜欢吞噬引号(用于保护其他字符)、星号、问号、尖括号和方括号,有些shell甚至会吞噬花括号。单引号是“最强大”的引号,可以引用除单引号以外的所有内容,而双引号是“最弱”的引号,但可以引用单引号。因此,'!?<'"'"
可以传递四个字符! - torekgit diff --status -- . ":(exclude)file/to/exclude.txt"
。 - cnlevygit diff
。 - torek