Использование подстановочных знаков пути в git log - PullRequest
9 голосов
/ 22 марта 2012

У меня есть файл в глубине моего дерева мерзавцев:

$ 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 ]

4 голосов
/ 02 мая 2014

Используйте подстановочный знак, без экранирования или кавычек:

git log -- */Expression.java

Протестировано на Windows 7 в оболочке cmd и git bash.

В зависимости от вашей оболочки вам могут понадобиться кавычки - если одинарные кавычки не работают, попробуйте двойные кавычки.

3 голосов
/ 22 марта 2012

использование xargs:

find . -name 'Expression.java' | xargs git log --oneline -2
1 голос
/ 25 февраля 2016

В git 2.8 (март 2016 г.) подстановочные знаки более надежно поддерживаются как pathspec или refspec.

См. коммит aac4fac , коммит df714f8 , коммит 1cc777d (10 февраля 2016) Джефф Кинг (peff) .
(Объединено с Junio ​​C Hamano - gitster - в коммит e6a6a76 , 24 февраля 2016 г.)

Это означает, что:

  • wilcard работает с путями:

    git log -- "*.t"
    # or
    git log    "*.t"
    
  • Подстановочный знак работает с refspecs (при поиске сообщения фиксации, начинающегося, например, с b):

    git log "HEAD^{/b.*}" --
    # or
    git log "HEAD^{/b.*} 
    
...