2012-03-22 9 views
8

Tengo un archivo en el fondo de mi árbol git:El uso de comodines en ruta git log

$ git ls-files | grep /Expression.java 
sm/src/main/java/cl/utilities/sm/Expression.java 

Me gustaría conseguir un registro de su actividad sin tener que escribir toda la ruta. Básicamente quiero esta salida:

$ git log --oneline -2 sm/src/main/java/cl/utilities/sm/Expression.java 
2718cdc cleaned up some warnings 
f30cf15 Added missing @Overrides 

... pero sin tener que escribir sm/src/main/java/cl/utilities/sm. He intentado un montón de cosas, pero ninguno de ellos trabajaba:

$ git log -- \*/Expression.java 
$ git log -- \*Expression.java 
$ git log -- \*\*/Expression.java 
$ git log -- '*/Expression.java' 
$ git log -- '**/Expression.java' 
+4

git log - \ */Expression.java debería funcionar, raro –

+0

En mi Windows 7 comando shell git log "*/Expression.java" funciona, pero comillas simples no funcionan. – yoyo

Respuesta

3

utilizar un comodín, no se escape o las cotizaciones requeridas:

git log -- */Expression.java 

probado en Windows 7 en cmd shell y git bash.

Dependiendo de su carcasa, es posible que necesite presupuestos; si las comillas simples no funcionan, intente con comillas dobles.

+0

Confirmado que esto funciona para mí ahora. Parece que fui víctima de un error presente en algunas versiones de git disponibles en esta época. La solución, como se menciona en http://git-blame.blogspot.com/2012/01/git-1776-1784-and-179-rc2.html, es https://github.com/git/git/commit/5c8eeb8. Apareció por primera vez en 1.7.7.6, lanzado solo un par de meses antes de que hiciera mi pregunta. –

3

uso xargs:

find . -name 'Expression.java' | xargs git log --oneline -2 
+0

Eso supone que el archivo existe localmente. ¿Qué sucede si desea registrar un archivo que se ha eliminado? – yoyo

0

Con git 2.8 (marzo de 2016), los comodines se soportan más firmemente como pathspec o refspec.

Ver commit aac4fac, commit df714f8, commit 1cc777d (10 de febrero de 2016) por Jeff King (peff).
(Fusionado por Junio C Hamano -- gitster -- en commit e6a6a76 24 Feb 2016)

Eso significa que:

  • wilcard trabaja con pathspecs:

    git log -- "*.t" 
    # or 
    git log "*.t" 
    
  • comodín funciona con refspecs (cuando se busca para un mensaje de confirmación que comience por 'b' por ejemplo):

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