如何使 git log
只显示除我指定的文件之外更改的文件的提交?
使用 git log
,我可以过滤那些接触给定路径集的提交。我想要的是反转该过滤器,以便只提交触摸路径以外的指定将列出。
我可以得到我想要的
git log --format="%n/%n%H" --name-only | ~/filter-log.pl | git log --stdin --no-walk
filter-log.pl
位置在:
#!/usr/bin/perl
use strict;
use warnings;
$/ = "\n/\n";
<>;
while (<>) {
my ($commit, @files) = split /\n/, $_;
if (grep { $_ && $_ !~ m[^(/$|.etckeeper$|lvm/(archive|backup)/)] } @files) {
print "$commit\n";
}
}
除了我想要一些更优雅的东西。
注意,我 不是询问如何让 git 忽略这些文件。这些文件 应该被 git 跟踪并提交。
相关问题: 如何反转 ‘git log -grep =
2008年论坛关于这个话题的讨论: Re: 从 git-diff 中排除文件这看起来很有希望解决我的问题,但对我而言还是缺少一些线索