2012-06-21 16 views
10

¿Existe una opción para mostrar el comando completo cuando se usa un alias?¿Muestra el comando completo al ejecutar un alias de Git?

Ejemplo:

$ git ci -m "initial commit" 
Full command: git commit -m "initial commit" 
... 
$ git lg 
Full command: git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative 
... 

Alias ​​son muy convenientes, pero me gusta aprender/Se recuerda lo que mis alias realmente hacen (la mayoría de mis alias se copian de Internet)

Respuesta

2

A modo de ejemplo:

log-1 = "!sh -c 'echo \"Full command: git log --graph --decorate --pretty=oneline --abbrev-commit\"; git log --graph --decorate --pretty=oneline --abbrev-commit' -"

Se llama a la shell y ejecutar las órdenes dadas.

En su ejemplo lg, tendría que hacer un montón de escape ya que tiene citas dentro de los qoutes y los caracteres que deben escaparse. Te sugiero que crees tu propio formato bonito y lo uses en el alias. Supongamos que llamamos a su formato el mío. Esto es lo que hay que hacer:

git config --add pretty.mine "%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%C(bold blue)<%an>%Creset"

y el alias sería

lg = "!sh -c 'echo \"Full command: git log --graph --pretty=mine --abbrev-commit --date=relative\"; git log --graph --pretty=mine --abbrev-commit --date=relative' -"

0

Si está utilizando fiesta puede añadir "set -x" para el alias. Por lo tanto, como un simple ejemplo, si tiene un alias:

ol = !sh -c 'git log --oneline' 

desea cambiarlo a:

ol = "!sh -c 'set -x; git log --oneline'" 

Se necesita las comillas dobles alrededor debido al punto y coma.

Para permitir el resto de la línea de comando, debería agregar "$ @" y también poner "-" para que los argumentos comiencen desde $ 1. Esto le da:

ol = "!sh -c 'set -x; git log --oneline [email protected]' -" 

Los alias más complicados probablemente ya tengan este material.

No sé de una manera de establecer esto globalmente para todos los alias, aunque sería bueno tenerlo!

EDITAR: Esto realmente funciona un poco más fácil usando una función de shell en su lugar. Puede hacer algo como:

git config alias.ol '!f() { set -x; git log --oneline [email protected]; }; f' 

para obtener el mismo efecto que el anterior.

+0

No estoy seguro de si funcionará con los alias de git (es decir, los definidos en la configuración de git) – CharlesB

+0

Lo hará. Ahí es donde lo probé. – seumasmac

+0

Quiero decir si git registra alias a git log --oneline ** en git config **, ¿funcionará? – CharlesB

3

Otra opción es las ideas de comandos enumerados en la sección wiki Git en Aliases wich da, para la sección de .git/config

[alias]

aliases = !git config --get-regexp 'alias.*' | colrm 1 6 | sed 's/[ ]/ = /' 

alias Este continuación, se enumeran todos sus alias como líneas de comando.

Cuestiones relacionadas