使用正则表达式搜索文件名

时间:2015-06-09 06:45:53

标签: regex git

有没有办法做git log <path>这样的事情,而不是使用正则表达式的路径?我想搜索包含文件的提交,其文件名与给定的模式匹配...

...当我们处理它时:是否还有一种方法只能为匹配给定模式的文件名执行git status / git diff

提前致谢!

编辑:如果有任何办法,我会非常棒,也适用于Git v1.7.1。

4 个答案:

答案 0 :(得分:5)

就纯git解决方案而言,我知道匹配特定文件模式的唯一选择是使用glob。

git log -- '*.json'

将为您提供包含json文件更改的所有文件。 git status也可以这样做。

另一方面,在diff或commit消息中搜索正则表达式非常容易。 git log提供--grep选项以在提交消息中搜索匹配项,并提供-S选项以搜索字符串。

Take a look at this question for further details

答案 1 :(得分:3)

对于一个简单的模式,您可以尝试,例如:

find . -name "*.c" | xargs git log

对于完整的正则表达式,您可以使用:

find . | grep "REGEX" | xargs git log

如果您需要先前删除的文件包含在输出中,您可以使用

git log --all --pretty=format: --name-only --diff-filter=A | sort -u | grep "REGEX" | xargs git log --

上面命令的第一部分找到了git中的所有文件,从一个回答者解除了other question

答案 2 :(得分:0)

感谢你的回答(特别是格雷格和迈克尔)我自己开发了一种方式。 (我希望这证明是可行的):

git log --name-only --pretty="format:"|sort -u|egrep '<REGEX>'|xargs git log --

答案 3 :(得分:-1)

你能做点什么:

git log | grep [string_to_look_for]