我的git树中有一个文件:
$ git ls-files | grep /Expression.java
sm/src/main/java/cl/utilities/sm/Expression.java
我想在不必输入整个路径的情况下获取其活动日志。基本上我想要这个输出:
$ git log --oneline -2 sm/src/main/java/cl/utilities/sm/Expression.java
2718cdc cleaned up some warnings
f30cf15 Added missing @Overrides
...但无需输入sm/src/main/java/cl/utilities/sm
。我尝试了很多东西,但都没有奏效:
$ git log -- \*/Expression.java
$ git log -- \*Expression.java
$ git log -- \*\*/Expression.java
$ git log -- '*/Expression.java'
$ git log -- '**/Expression.java'
答案 0 :(得分:4)
使用通配符,无需转义或引号:
git log -- */Expression.java
在cmd shell和git bash中的Windows 7上测试。
根据您的shell,您可能需要引号 - 如果单引号不起作用,请尝试使用双引号。
答案 1 :(得分:3)
使用xargs
:
find . -name 'Expression.java' | xargs git log --oneline -2
答案 2 :(得分:1)
使用git 2。8(2016年3月),可以更加坚定地支持通配符作为pathspec或refspec。
commit aac4fac见commit df714f8,commit 1cc777d,Jeff King (peff
)(2016年2月10日)。
(Junio C Hamano -- gitster
--于2016年2月24日commit e6a6a76合并)
这意味着:
wilcard适用于pathspecs:
git log -- "*.t"
# or
git log "*.t"
通配符与refspecs一起使用(例如,搜索以' b
'开头的提交消息时):
git log "HEAD^{/b.*}" --
# or
git log "HEAD^{/b.*}