Answers:
该--diff-filter
选项适用于diff
和日志。
我使用--diff-filter=M
了很多方法,将diff输出限制为仅内容修改。
要检测重命名和副本并在diff输出中使用它们,可以分别使用-M
和-C
以及的R
和C
选项--diff-filter
。
--diff-filter=!D
Also, these upper-case letters can be downcased to exclude. E.g. --diff-filter=ad excludes added and deleted paths.
--diff-filter=[(A|C|D|M|R|T|U|X|B)…[*]]
仅选择已更改(T)是未合并(U),是未知(X)或配对已损坏(B)。可以使用过滤器字符的任何组合(包括无)。
将*(全或无)添加到组合中时,如果在比较中有任何文件与其他条件匹配,则选择所有路径;如果没有符合其他条件的文件,则不会选择任何内容。
同样,这些大写字母可以小写以排除。例如--diff-filter = ad排除添加和删除的路径。
示例:仅显示添加,更改,修改的文件,不包括已删除的文件:
git diff --diff-filter=ACM
更新:该接受的答案由查尔斯·贝利是正确的; 所需的功能已内置到git中。
我将在此处保留此答案,因为它可能会为git中未内置的内容提供思路。
git diff
通过与进行比较,显示新文件和已删除文件/dev/null
。编写(在我自己使用Perl时)寻找/dev/null
并过滤出以下行直到下一个差异的东西应该不是很困难。然后git diff ... | the-filter
。
重命名文件是另一回事。我还没有一个好的答案。
... | less
显式使用。)您可能会看到less
的-E
或-F
选项(尽管在我的系统上它不允许我查看输出)。
git log
将导致它完全忽略仅添加和/或删除文件的提交。