当使用git grep时,是否可以默认忽略某些目录?

3

在Django中,我们有类似这样的south:

/app
  /migrations
    .. migration files.

由于迁移文件代表的是历史结构而不是当前的内容,因此我希望不要每次搜索它们。在运行git grep时,有没有一些方法可以默认排除它们?


2
可能重复:https://dev59.com/EGkv5IYBdhLWcg3wsCxO - dusan
@dusan也许不是完全重复,但那里的答案可能对这里有用。 - asmeurer
3
我不同意重复,因为这是默认情况下提出的问题。我没有看到一个简单的减少。 - Ciro Santilli OurBigBook.com
3个回答

2
这是一个不太好的hack方法,但它可能对你有用:创建app/migrations/.gitattributes文件并添加以下内容。
* binary

将所有迁移标记为二进制文件,然后使用git grep -I跳过二进制文件。

如果您还想在差异中忽略迁移,则可以通过更改.gitattributes的内容来实现

* binary -diff

关于添加被grep所尊重的属性,有一个讨论,因此有一天可能会有一个合适的解决方案。


1

我有一个别名git gr,用于启用颜色和不区分大小写的git grep。你也可以这样做并添加排除项。这样打字更快!

否则,大多数情况下无法更改Git命令的默认行为,因为它们直接在内部使用。


不确定你所说的“添加排除项”是什么意思,git grep 不支持排除模式。或者你是通过 ! 别名将 git gr 别名为普通的 grep 吗? - kynan
嗯,我从来没有注意到那个。如果你不关心 git grep 的特定功能,我想你可以使用普通的 grep 命令,并确保排除 .git - asmeurer
您可以创建一个别名,并使用默认文件列表包含不包含您的迁移文件夹,正如此答案中所讨论的那样。 - kynan

0

我认为单独使用git grep命令是没有解决方案的。

我能想到的一个解决办法是将你想要忽略的文件/文件夹添加到.gitignore文件中,然后执行以下命令:

git grep --exclude-standard

很抱歉,我无法做到这一点,但是我需要在我的代码库中进行数据库迁移。 - Kit Sunde
对于一直在疑惑的人们:虽然你可以将已跟踪的文件添加到.gitignore中,但--exclude-standard只适用于未跟踪的文件。 - kynan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接