git show HEAD ^ no parece estar funcionando. ¿Esto es normal?

Estoy usando Zsh yy tratando de ejecutar git show para un proyecto para ver mi historial de revisión. Si lo hago

git show HEAD 

funciona bien mostrándome mi última confirmación, sin embargo, los siguientes commands no funcionan

 [master↑5⚡]:~/project $ git show HEAD^ zsh: no matches found: HEAD^ [master↑5⚡]:~/project $ git show HEAD^^ zsh: no matches found: HEAD^^ 

Sin embargo, esto funciona

 git HEAD~1 

¿Estoy haciendo algo mal aquí con git show HEAD^^ ?

git versión 1.7.4.5

El quilate ( ^ ) tiene un significado especial en Bash y Zsh.

Tendrá que escaping o citarlo:

 % git show HEAD\^ % git show 'HEAD^^' 

En lugar de escapingse o citar el símbolo de intercalación, podría decirle a zsh que deje de achicar el command cuando no coincida con un patrón global. Pon esta opción en tu .zshrc :

 setopt NO_NOMATCH 

Esa opción evita que zsh aborte los commands si falla el emparejamiento global. git show HEAD^ funcionará correctamente, y no es necesario que te salgas del caret. Además, globbing y el ^ designador de events seguirán funcionando de la manera esperada.

Para responder la pregunta de dolzenko en los comentarios, puedes get git log ^production master (que es, casualmente, también exactamente lo que hace la syntax de 'doble punto' de git log production..master : git log production..master ) al inhabilitar el globbing extendido:

 setopt NO_EXTENDED_GLOB 

Por supuesto, puede que realmente confíe en globbing extendido y no lo sepa. Recomiendo leer sobre lo que hace antes de desactivarlo.

También puedes usar noglob.

 % noglob git show HEAD^ 

(o noglob git un alias para noglob git )