相关疑难解决方法(0)

使'git log'忽略某些路径的更改

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

108
推荐指数
2
解决办法
2万
查看次数

等价:git log --exclude-author?

在工作中,我们有一个git repo,其中大多数提交都是由bot用户自动提交的.有时我更喜欢从该repo查看git日志,但没有看到自动提交.我想它可以被描述为倒置的"git log --author"或"git log --exclude-author = botuser",如果存在选项的话.

目前我执行以下操作,缩写为bash别名.

git log --format="%H %aE" | grep -v -F botuser@domain | while read hash email; do git log -1 $hash; echo; done | less
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果对我想要完成的事情有一个不那么强硬的解决方案?

git

33
推荐指数
4
解决办法
9009
查看次数

GIT:按作者组过滤日志

我们的公司分为多个团队,在将代码发送给质量检查人员之前,我们会执行代码审查。

通常,我们触摸的任何代码都会由同一团队中的某个人进行审核(A),但在某些情况下,我们还需要触摸另一个团队中的代码(B)。

在这种情况下,代码审查应分为两部分一部分由A小组审查,另一部分由B小组审查

我们的问题是,很多情况下,团队A不会发送要由团队B审核的代码,这会导致团队B不了解此新代码。

我想做的是定期运行一个脚本,以查找不属于我们团队的任何人所做的代码某些部分(通常是团队处理的子目录)中的提交,但是不幸的是,其中的--not论点git log似乎并不与--author我合作,所以我不能快乐地奔跑git log --not --author "John" --author "Paul" --author "Ringo" module/A module/B module/C

我的要求翻译成类似“ 列出由非John,Paul或Ringo的人完成的所有涉及模块/ A,模块/ B或模块/ C的提交

有什么办法可以使用“官方”工具来做到这一点?我也对开放源代码脚本感兴趣,如果它意味着这样做会导致单行代码或接近单行代码的话。

git author commit filter

2
推荐指数
2
解决办法
868
查看次数

标签 统计

git ×3

author ×1

commit ×1

filter ×1