我试图db/irrelevant.php从Git diff中排除一个文件().我试图把在一个文件db名为的子目录.gitattributes与行irrelevant.php -diff
,我也尝试创建一个名为.git/info/attributes包含db/irrelevant.php.
在所有情况下,该db/irrelevant.php文件都作为Git二进制补丁包含在diff中.我想要的是diff命令忽略对该文件的更改.我究竟做错了什么?
git log除了我指定的文件外,我怎么才能只显示改变文件的提交?
有了git log,我可以将我看到的提交过滤给那些触及给定路径的人.我想要的是反转该过滤器,以便只列出除指定的触摸路径以外的触摸路径.
我可以得到我想要的东西
git log --format="%n/%n%H" --name-only | ~/filter-log.pl | git log --stdin --no-walk
Run Code Online (Sandbox Code Playgroud)
在哪里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";
}
}
Run Code Online (Sandbox Code Playgroud)
除了我想要比这更优雅的东西.
请注意,我不是在问如何让git忽略这些文件.应跟踪和提交这些文件.就是这样,大多数时候,我对看到它们并不感兴趣.
相关问题:如何反转`git log --grep = <pattern>`或如何显示与模式不匹配的git日志除了提交消息而不是路径之外,它是同一个问题.
关于这个主题的论坛讨论从2008年开始:Re:从git-diff中排除文件这看起来很有希望,但线程似乎已经枯竭了.
是不是可以在git diff中忽略某些文件?我特别感兴趣的是过滤掉Makefile.in,Makefile,configure(以及所有自动生成的垃圾).