在git log中使用路径通配符

时间:2012-03-22 14:08:07

标签: git wildcard git-log

我的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'

3 个答案:

答案 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 aac4faccommit df714f8commit 1cc777dJeff 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.*}