相关疑难解决方法(0)

如何从git grep搜索中排除某些目录/文件

有没有办法搜索git存储库,git grep但从搜索中排除某些路径/目录/文件?像--exclude普通grep命令中的选项一样.

如果你很好奇:我不想使用普通的grep,因为它比git grepgit存储库的大小要慢得多.

git grep

121
推荐指数
4
解决办法
3万
查看次数

使'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-diff中排除文件

我用git跟踪一个项目.工作副本中有一些Xcode项目文件,我想继续跟踪,但不想在差异中看到,因为总有几十条我不感兴趣的更改行.是否有一种简单的方法可以git-diff跳过这些文件?我试图设置一个自定义的"静音"差异工具:

$ cat .gitattributes 
Project.xcodeproj/* diff=nodiff

$ cat ~/.gitconfig 
[diff "nodiff"]
    command = /bin/true

但:

$ git diff
external diff died, stopping at Project.xcodeproj/zoul.mode1v3.

我究竟做错了什么?

git

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

是否可以通过git别名覆盖git命令?

我的〜/ .gitconfig是:

[alias]
        commit = "!sh commit.sh"
Run Code Online (Sandbox Code Playgroud)

但是,当我输入git commit时,不会调用脚本.

是否可能,或者我必须使用另一个别名?

git alias

48
推荐指数
4
解决办法
8559
查看次数

git diff --stat排除某些文件

尝试调整来自旺旺的答案以从"git diff"中排除文件以获得--stat标志并失败 - 接受的答案(创建驱动程序)似乎只是unix(重定向到/ bin/true,无论这意味着什么)加上它创建了一个驱动程序将它永久地分配给文件类型,而我正在寻找一个开关来临时禁用文件的差异(或者更确切地说是某些文件).

脚本解决方案:

git diff `git status -s |grep -v ^\ D |grep -v file/to/exclude.txt |cut -b4-`
Run Code Online (Sandbox Code Playgroud)

实际上调用git状态并编辑其​​输出 - 而我想要的是指示git diff本身在计算(简单)--stat(只是更改行)时忽略一些文件.我经历了git-diff文档,但似乎无法找到这样的选项.有人帮我一把吗?

$ git --version
git version 2.6.1.windows.1
Run Code Online (Sandbox Code Playgroud)

git git-diff

15
推荐指数
1
解决办法
9055
查看次数

如何从 git diff --no-index 中排除文件和目录

如何从 中排除文件和目录git diff --no-index

例如,我想显示两个目录project1&之间的差异,project2同时忽略它们的顶级.git目录 ( project1/.git& project2/.git) 及其所有.DS_Store文件。

git diff git-diff

6
推荐指数
1
解决办法
806
查看次数

如何在分支之间进行 git diff 并排除一个文件

这对某人来说应该很简单,我似乎无法获得正确的语法。情况是我已经检查了我的一个同事分支,我想看到这个分支和 dev 分支之间的区别,但是我不想看到一个特定文件中的变化(因为它是一个巨大的文件)。这是我尝试过的:

git diff origin/dev ':(exclude)package-lock.json'

git diff ':(exclude)package-lock.json' origin/dev

git diff -- . ':(exclude)package-lock.json' origin/dev
Run Code Online (Sandbox Code Playgroud)

我知道我很接近...

注意...有人告诉我这个问题可能是这个问题的重复:想要从“git diff”中排除文件, 但事实并非如此。该问题的公认答案是:

git diff -- . ':(exclude)db/irrelevant.php'
Run Code Online (Sandbox Code Playgroud)

但是,当我在系统上运行此命令时:

git diff -- . ':(exclude)package-lock.json'
Run Code Online (Sandbox Code Playgroud)

我什么也得不到。我一无所获的原因可能是因为在此命令中从未指定我想要当前分支和 origin/dev 之间的差异。我想要的是类似于上面的答案,但也表明当前分支和远程分支之间的区别。

git

3
推荐指数
1
解决办法
1716
查看次数

Git diff忽略

是不是可以在git diff中忽略某些文件?我特别感兴趣的是过滤掉Makefile.in,Makefile,configure(以及所有自动生成的垃圾).

git autotools

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

标签 统计

git ×8

git-diff ×2

alias ×1

autotools ×1

diff ×1

grep ×1