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中部分暂存文件时,我收到以下错误消息.
git add -p mass_scan.py
fatal: Invalid pathspec magic 'prefix:8' in ':(prefix:8)mass_scan.py'
No changes.
Run Code Online (Sandbox Code Playgroud)
这是什么意思?如何部分暂存文件?
我用的是git版本
git version 2.6.2.450.g259b5e6
Run Code Online (Sandbox Code Playgroud)
直接从源安装(没有包管理器).我仍然可以部分添加文件tig.
我正在git存储库中寻找特定的字符串,但是我希望我的git log -Swhatever -p结果排除对与CSS相关的任何更改,例如,文件扩展名为.css或的任何文件.scss
是否有筛选器选项或git log缺少的选项?
到目前为止,我已经很git log -Swhatever -p -- '*.erb' '*.rb' '*.coffee' '*.js'可能怀疑“我的字符串可能所在的其他类型的文件扩展名”,但是我敢打赌,我会错过一些文件扩展名。
我正在尝试总结我在项目上的工作.问题是我不想在输出中包含测试文件git log --patch.
这些文件位于一个名为的目录中mtest; 但是,该文件夹还包含我想要显示的测试套件代码.测试文件,我想排除,有扩展mscx或xml,所以我想基于该过滤器的工作.
我已经看过使'git log'忽略某些路径的更改,但这看起来像是排除了修改文件而不是简单地排除文件的提交.
有没有办法做到这一点?
我已经尝试了Jubobs的答案,它看起来很有效,但令人惊讶的是,即使有过滤器,也会出现2个文件.
我用这个小存储库复制了这个:
mkdir test
cd test
git init
echo 'readme' > README
git add .
git commit -m "Initial commit"
mkdir test2
cd test2
echo 't1' > test1.cpp
echo 't2' > test2.xml
git add .
git commit -m "c2"
echo 't3' > test3.cpp
echo 't4' > test4.xml
git add .
git commit -m "c3"
Run Code Online (Sandbox Code Playgroud)
我注意到创建目录时不会过滤文件.我尝试了以下命令:
git log --patch -- . ":(exclude)**/*.xml"
Run Code Online (Sandbox Code Playgroud)
这导致包含 …
我正在查看一个相当大的项目的git存储库,其测试套件分散在各个子目录中的几个文件中.所有测试用例文件名都遵循相同的通配符模式(例如test-*).鉴于此,如何列出提交到存储库的最新测试用例?
我不太关注这些提交是创建测试用例还是最后修改测试用例.要么没事.我只是想看看项目贡献者编写/修改的一些较新的测试.
据我所知:
git log -- */test*
Run Code Online (Sandbox Code Playgroud)
仅显示在层次结构中触摸测试用例一级的提交,而不是更低.