如何从 `git grep` 中省略很长的行?
How to omit very long lines from `git grep`?
我正在搜索我的存储库(使用 vim-fugitive 的 :Ggrep),我有不同的 .js 文件 - 缩小的和常规的。
我想从 git grep
中省略缩小的文件(换句话说 - 与查询匹配的很长的行)。我调查了 git help grep
并用谷歌搜索但找不到任何东西。欢迎所有想法。
grep 是一个命令行实用程序,用于在纯文本数据集中搜索与正则表达式匹配的行。
您可以使用正则表达式来限制搜索。
例如,
您可以使用花括号来控制出现的次数。例如,这表示 0 到 10:
/^[a-z]{0,10}$/
选项是:
{3} Exactly 3 occurrences;
{6,} At least 6 occurrences;
{2,5} 2 to 5 occurrences.
对我来说,最好的方法是创建一个名为 .gitattributes 的文件,内容如下:
*.min.js binary
*.min.css binary
Benni 的解决方案相当不错。在此基础上,如果您想要一个稍微更通用的解决方案,请使用 git grep
在存储库中查找行长超过 1500 个字符的文本文件。然后在.git/info/attributes
中标记这些文件binary
。这是一个单行代码:
git grep -lI '.\{1500\}' | sed 's/$/ binary/' >> .git/info/attributes
你也可以在.gitattributes
中记录这个,当然,如果你想版本化这个(并且你的团队同意)。
这实际上并没有按照要求省略长行,但是为了避免在匹配很长的行(例如缩小的javascript)时终端被填满,您可以配置 git 以使用 -S
选项(--chop-long-lines
的缩写)通过 less
分页输出:
# For current repo only
git config --local core.pager "less -S"
# For all git repos
git config --global core.pager "less -S"
或等效地将此添加到相关的 .gitconfig
或 .git/config
[core]
pager = less -S
我正在搜索我的存储库(使用 vim-fugitive 的 :Ggrep),我有不同的 .js 文件 - 缩小的和常规的。
我想从 git grep
中省略缩小的文件(换句话说 - 与查询匹配的很长的行)。我调查了 git help grep
并用谷歌搜索但找不到任何东西。欢迎所有想法。
grep 是一个命令行实用程序,用于在纯文本数据集中搜索与正则表达式匹配的行。 您可以使用正则表达式来限制搜索。
例如, 您可以使用花括号来控制出现的次数。例如,这表示 0 到 10:
/^[a-z]{0,10}$/
选项是:
{3} Exactly 3 occurrences;
{6,} At least 6 occurrences;
{2,5} 2 to 5 occurrences.
对我来说,最好的方法是创建一个名为 .gitattributes 的文件,内容如下:
*.min.js binary
*.min.css binary
Benni 的解决方案相当不错。在此基础上,如果您想要一个稍微更通用的解决方案,请使用 git grep
在存储库中查找行长超过 1500 个字符的文本文件。然后在.git/info/attributes
中标记这些文件binary
。这是一个单行代码:
git grep -lI '.\{1500\}' | sed 's/$/ binary/' >> .git/info/attributes
你也可以在.gitattributes
中记录这个,当然,如果你想版本化这个(并且你的团队同意)。
这实际上并没有按照要求省略长行,但是为了避免在匹配很长的行(例如缩小的javascript)时终端被填满,您可以配置 git 以使用 -S
选项(--chop-long-lines
的缩写)通过 less
分页输出:
# For current repo only
git config --local core.pager "less -S"
# For all git repos
git config --global core.pager "less -S"
或等效地将此添加到相关的 .gitconfig
或 .git/config
[core]
pager = less -S