11

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'
4

3 に答える 3

7

ワイルドカードを使用します。エスケープや引用符は必要ありません。

git log -- */Expression.java

Windows7でcmdシェルとgitbashでテストされています。

シェルによっては、引用符が必要になる場合があります。一重引用符が機能しない場合は、二重引用符を試してください。

于 2014-05-02T17:48:50.223 に答える
3

使用xargs

find . -name 'Expression.java' | xargs git log --oneline -2
于 2012-03-22T14:16:15.197 に答える
3

git 2.8(2016年3月)では、ワイルドカードはpathspecまたはrefspecの両方としてより確実にサポートされます。

ジェフ・キング()によるcommit aac4faccommit df714f8commit 1cc777d(2016年2月10日)を参照してください。( Junio C Hamanoによってマージされました---コミットe6a6a76 、20162月24日)peff
gitster

つまり、次のことを意味します。

  • wilcardはpathspecsで動作します:

      git log -- "*.t"
      # or
      git log    "*.t"
    
  • ワイルドカードはrefspecsで機能します(たとえば、''で始まるコミットメッセージを検索するb場合)。

      git log "HEAD^{/b.*}" --
      # or
      git log "HEAD^{/b.*} 
    
于 2016-02-25T08:37:52.800 に答える