有没有办法做git log <path>
这样的事情,而不是使用正则表达式的路径?我想搜索包含文件的提交,其文件名与给定的模式匹配...
...当我们处理它时:是否还有一种方法只能为匹配给定模式的文件名执行git status
/ git diff
?
提前致谢!
编辑:如果有任何办法,我会非常棒,也适用于Git v1.7.1。
答案 0 :(得分:5)
就纯git解决方案而言,我知道匹配特定文件模式的唯一选择是使用glob。
git log -- '*.json'
将为您提供包含json
文件更改的所有文件。 git status
也可以这样做。
另一方面,在diff或commit消息中搜索正则表达式非常容易。 git log
提供--grep
选项以在提交消息中搜索匹配项,并提供-S
选项以搜索字符串。
答案 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]