Esto creará un alias git permanente llamado aliasque se almacena en su ~/.gitconfigarchivo. Usarlo enumerará todos sus alias git, en casi el mismo formato que están en el ~/.gitconfigarchivo. Para usarlo, escriba:
$ git alias
loga = log --graph --decorate --name-status --all
alias = ! git config --get-regexp ^alias\. | sed -e s/^alias\.// -e s/\ /\ =\ /
Se aplican las siguientes consideraciones:
Para evitar que el alias aliasaparezca en la lista anterior, agregue | grep -v ^'alias 'justo antes de la comilla doble de cierre. No recomiendo esto para que los usuarios no olviden que el comando no aliases más que un alias y no es una característica de git.
Para ordenar los alias enumerados, agregue | sortjusto antes de la comilla doble de cierre. Alternativamente, puede mantener los alias ~/.gitconfigordenados.
Para agregar el alias como un alias de todo el sistema, reemplace --global(para el usuario actual) con --system(para todos los usuarios). Esto generalmente va en el /etc/gitconfigarchivo.
Me gusta este porque se deshace del alias.principio de cada línea
Brian J
3
No estoy seguro de por qué, pero esta respuesta no funciona para mí. Sigo recibiendo fatal: bad config. Sin embargo, la solución de Git-extra funciona para mí: github.com/tj/git-extras/blob/master/bin/git-alias
Ashitaka
1
@ Ashitaka, prueba una versión limitada, por ejemplo git config --global alias.alias "! git config --get-regexp ^alias\.". Alternativamente, asegúrese de git versiontener una versión actual de git.
Acumenus
¡Este es realmente un gran trabajo y lo reúne todo de una manera extremadamente útil!
UpAndAdam
Creo que puedes deshacerte de la parte "! Git", que básicamente se deshace. Vea la sección de cierre de Git Aliases
O simplemente git config -ey luego usa tus ojos para encontrar la [alias]sección. Pero los fanáticos de git siempre parecen agregar un poco de scripting bash o coincidencia de expresiones regulares para resolver sus problemas, incluso cuando no es necesario :)
MatrixFrog
39
git config -esolo edita el .git/configarchivo. Pero la mayoría de mis alias se definen en lo global ~/.gitconfig.
Boldewyn
21
Para ser práctico, eso debería ser git config --global alias.aliases config --get-regexp '^alias\.'"... y luegogit aliases
Derek Greer
66
@DerekGreer te estás perdiendo un "lugar
Jake Berger
147
Creé un alias de git llamado (curiosamente) aliasexactamente para este propósito ... útil de vez en cuando si usa el alias lo suficiente ...
Hablando de fácil de recordar, también podría crear el aliasalias una vez y luego olvidar que incluso lo creó.
Acumenus
3
Puede usarlo -lcomo un atajo conveniente para, --listpero me gusta la idea de crear un alias para enumerar los alias.
ADTC
1
Buena solución, pero mejor usando grep con una expresión regular para producir líneas que comienzan con alias en caso de que algunas configuraciones contengan alias de palabras clave:git config --list | grep -E '^alias'
MasterMind
28
Lo siguiente funciona en Linux, MacOSX y Windows (con msysgit).
Use git la para mostrar alias en .gitconfig
¿Escuché 'scripting bash'? ;)
Sobre la parte 'no necesaria' en un comentario anterior, básicamente creé una página de manual como resumen para mis alias. ¿Por qué tanto alboroto? ¿No es una exageración completa?
Sigue leyendo ...
He configurado los comandos como este en mi .gitconfig, separados como TAB=TAB:
y simplemente definió otro alias para grep la TAB=parte de los alias definidos. (Todas las demás opciones no tienen pestañas antes y después del '=' en su definición, solo espacios).
Los comentarios no agregados a un alias también tienen un TAB=====anexo, por lo que se muestran después del grepping.
Para una mejor visualización, estoy canalizando la salida grep en menos, así:
versión básica: (negro / blanco)
#.gitconfig
[alias]
# use 'git h <command>' for help, use 'git la' to list aliases =====
h = help #... <git-command-in-question>
la = "!grep '\t=' ~/.gitconfig | less"
La parte ' \t=' coincide TAB=.
Para tener una mejor visión general de los alias que tengo, y desde que uso la consola bash, coloreé la salida con colores de terminal:
todos '=' están impresos en rojo
todos los '#' están impresos en verde
versión avanzada: (coloreada)
la = "!grep '\t=' ~/.gitconfig | sed -e 's/=/^[[0;31m=^[[0m/g' | sed -e 's/#.*/^[[0;32m&^[[0m/g' | less -R"
Básicamente igual que el anterior, solo se agrega el uso de sed para obtener los códigos de color en la salida.
La -Rbandera de menos es necesaria para obtener los colores que se muestran en menos.
(Recientemente descubrí que los comandos largos con una barra de desplazamiento debajo de su ventana no se muestran correctamente en los dispositivos móviles: el texto está cortado y simplemente falta la barra de desplazamiento. Ese podría ser el caso con el último fragmento de código aquí, manténgalo en importa cuando mires fragmentos de código aquí mientras estás en movimiento).
¿Por qué hacer que funcione tanta magia?
Tengo como media milla de alias, adaptados a mis necesidades.
Además, algunos de ellos cambian con el tiempo , por lo que, después de todo, la mejor idea para tener una lista actualizada es analizar el .gitconfig.
Un extracto breve **** de mis alias .gitconfig:
# choose =====
a = add #...
aa = add .
ai = add -i
# unchoose =====
rm = rm -r #... unversion and delete
rmc = rm -r --cached #... unversion, but leave in working copy
# do =====
c = commit -m #...
fc = commit -am "fastcommit"
ca = commit -am #...
mc = commit # think 'message-commit'
mca = commit -a
cam = commit --amend -C HEAD # update last commit
# undo =====
r = reset --hard HEAD
rv = revert HEAD
En mis estaciones de trabajo Linux o Mac también existen más alias en los .bashrc, algo así como:
#.bashrc
alias g="git"
alias gh="git h"
alias gla="git la"
function gc { git c "$*" } # this is handy, just type 'gc this is my commitmessage' at prompt
De esa manera, no es necesario escribir git help submodule, no es necesario git h submodule, solo gh submodulees todo lo que se necesita para obtener la ayuda. Son solo algunos caracteres, pero ¿con qué frecuencia los escribe?
Uso todo lo siguiente, por supuesto solo con atajos ...
añadir
cometer
comprometerse
restablecer - CABEZA dura
empujar
ir a buscar
rebase
revisa
rama
show-branch (en muchas variaciones)
shortlog
volver a registrar
diff (en variaciones)
log (en muchas variaciones)
estado
show
notas
...
Esto fue solo desde lo alto de mi cabeza.
A menudo tengo que usar git sin una interfaz gráfica de usuario, ya que muchos de los comandos de git no se implementan correctamente en ninguna de las interfaces gráficas. Pero cada vez que los uso, es principalmente de la misma manera.
En la parte 'no implementada' mencionada en el último párrafo:
todavía tengo que encontrar algo que se compare con esto en una GUI: sba = show-branch --color=always -a --more=10 --no-name- muestre todas las ramas locales y remotas, así como las confirmaciones que tienen dentro de ellas ccm = "!git reset --soft HEAD~ && git commit"- cambie el último mensaje de confirmación
Desde un punto de vista que es más simple:
¿con qué frecuencia escribe git add .o git commit -am "..."? Sin contar ni el resto ...
Conseguir que las cosas funcionen como git aao git ca "..."en Windows,
o con alias bash gaa/ g aao gca "..."/ g ca "..."en Linux y en Mac ...
Para mis necesidades, parecía una cosa inteligente de hacer, personalizar comandos de git como este ...
... y para un uso más fácil, solo me ayudé a mí mismo para comandos menos utilizados, así que no tengo que consultar las páginas de manual cada vez. Los comandos están predefinidos y buscarlos es lo más fácil posible.
Quiero decir, ¿somos programadores después de todo? Hacer que las cosas funcionen como las necesitamos es nuestro trabajo.
Aquí hay una captura de pantalla adicional, esto funciona en Windows:
BONIFICACIÓN: si está en Linux o Mac, las páginas man coloreadas pueden ayudarlo un poco:
No puedo hacer que esto funcione con Windows. Las salidas están en blanco para, por ejemplola = "!grep '\t=' ~/.gitconfig | less"
chwi
1
@Wilhelmsen: ¿Tal vez copiaste y pegaste cosas de la lista anterior? ¿Realmente tienes un TABprecedente cada =? Con espacios no funcionará. Yo mismo tenía espacios en mis ventanas .gitconfig, una vez que los reemplacé con una sola pestaña, cmd.exe se comporta como se esperaba.
sjas
2
sobre ingeniería
Arma X
depende de con qué frecuencia usas algo
sjas
16
Usando git vary filtrando solo aquellos que comienzan con alias:
Como se mencionó en otras respuestas, git config -lenumera todos los detalles de configuración de su archivo de configuración. Aquí hay un ejemplo parcial de esa salida para mi configuración:
Cuando el usuario intenta usar la --helpopción ' ' en un comando con alias, la información sobre el alias se imprime como se muestra a continuación:
$ git co --help
`git co' is aliased to `checkout'
Esto no parece correcto ya que el usuario solo ha alias ' co' y no ' git co'.
Esto podría incluso ser incorrecto en los casos en que el usuario haya usado un alias como ' tgit'.
$ tgit co --help
`git co' is aliased to `checkout'
( Nota: Esto funciona para mí en git bash en Windows . Para otros terminales, es posible que deba adaptar el escape ) .
Explicación
!git config --get-regexp ^alias\\. imprime todas las líneas de git config que comienzan con alias.
sed -e s/^alias.//elimina alias.de la línea
sed -e s/\\ /\\ $(printf \"\\043\")--\\>\\ /reemplaza la primera aparición de un espacio con \\ $(printf \"\\043\")--\\>(que se evalúa como #-->).
column -t -s $(printf \"\\043\")formatea todas las líneas en una tabla de columnas espaciadas uniformemente. El carácter $(printf \"\\043\")que evalúa #se utiliza como separador.
sort -k 1 ordena todas las líneas según el valor de la primera columna
$ (printf \ "\ 043 \")
Esto solo imprime el carácter #(hexadecimal 043) que se utiliza para la separación de columnas. Utilizo este pequeño truco para que el aliasesalias en sí no contenga literalmente el #personaje. De lo contrario, reemplazaría esos #caracteres al imprimir.
Nota : Cambie esto a otro carácter si necesita alias con #signos literales .
¿Puede mostrar un ejemplo de línea de comando de cómo usar esto, junto con la salida de muestra?
Acumenus
¿Construido en qué? No puedo encontrar nada de este tipo en msysgit. ¿Dónde encontraste esto exactamente?
ADTC
2
Ni llamarlo directamente desde la terminal ni como argumento para git produce ninguna salida de valor. ¿Qué es exactamente esto incorporado?
Acordemente-ascifo el
44
Trabajó para mí en git bash. $ __git_aliases devuelve una lista de alias, aunque no muestra a qué están alias.
jaypb
1
@ADTC la línea de código en esta respuesta es un ejemplo de línea de comando. El $ denota el símbolo del terminal de Linux típico. Escriba el resto de esta línea en dicho terminal y presione ENTERy salga una lista de sus alias. Funciona tanto en Linux como en Windows (git bash) porque está integrado en git. (Probablemente sea una función que git usa internamente para resolver alias cuando se usan en la línea de comando).
Superole
1
Si conoce el nombre del alias, puede usar la --helpopción para describirlo. Por ejemplo:
$ git sa --help
`git sa' is aliased to `stash'
$ git a --help
`git a' is aliased to `add'
Advertencias: cite la expresión regular para evitar la expansión de la shell como un globo, aunque no es técnicamente necesario si / cuando ningún archivo coincide con el patrón. Además: cualquier expresión regular está bien, excepto que no se puede usar ^(inicio del patrón) y $(final del patrón); Están implícitos. Asume que no está utilizando git-aliasdesde git-extras.
Además, obviamente sus alias serán diferentes; Estos son solo algunos que he configurado. (Quizás los encuentres útiles también).
Respuestas:
Esta respuesta se basa en la respuesta de Johnny . Se aplica si no está utilizando
git-alias
desdegit-extras
.En Linux, ejecute una vez:
Esto creará un alias git permanente llamado
alias
que se almacena en su~/.gitconfig
archivo. Usarlo enumerará todos sus alias git, en casi el mismo formato que están en el~/.gitconfig
archivo. Para usarlo, escriba:Se aplican las siguientes consideraciones:
Para evitar que el alias
alias
aparezca en la lista anterior, agregue| grep -v ^'alias '
justo antes de la comilla doble de cierre. No recomiendo esto para que los usuarios no olviden que el comando noalias
es más que un alias y no es una característica de git.Para ordenar los alias enumerados, agregue
| sort
justo antes de la comilla doble de cierre. Alternativamente, puede mantener los alias~/.gitconfig
ordenados.Para agregar el alias como un alias de todo el sistema, reemplace
--global
(para el usuario actual) con--system
(para todos los usuarios). Esto generalmente va en el/etc/gitconfig
archivo.fuente
alias.
principio de cada líneafatal: bad config
. Sin embargo, la solución de Git-extra funciona para mí: github.com/tj/git-extras/blob/master/bin/git-aliasgit config --global alias.alias "! git config --get-regexp ^alias\."
. Alternativamente, asegúrese degit version
tener una versión actual de git.fuente
'^alias\.'
git config -e
y luego usa tus ojos para encontrar la[alias]
sección. Pero los fanáticos de git siempre parecen agregar un poco de scripting bash o coincidencia de expresiones regulares para resolver sus problemas, incluso cuando no es necesario :)git config -e
solo edita el.git/config
archivo. Pero la mayoría de mis alias se definen en lo global~/.gitconfig
.git config --global alias.aliases config --get-regexp '^alias\.'"
... y luegogit aliases
"
lugarCreé un alias de git llamado (curiosamente)
alias
exactamente para este propósito ... útil de vez en cuando si usa el alias lo suficiente ...$ git config --global alias.alias "config --get-regexp ^alias\."
Tenga en cuenta que la expresión regular se asegura de que la línea comience con
alias.
.fuente
--system
lugar de--global
que algo como esto sea más útil a nivel de sistema, no a nivel de usuario.alias = config --get-regexp ^alias\\.
.git config --global alias.alias "!git config --get-regexp ^alias\. | grep -Po '(?<=alias\.)\S*' | sort"
Otra alternativa (puramente algo que encuentro fácil de recordar):
git config --list | grep alias
fuente
alias
alias una vez y luego olvidar que incluso lo creó.-l
como un atajo conveniente para,--list
pero me gusta la idea de crear un alias para enumerar los alias.git config --list | grep -E '^alias'
Lo siguiente funciona en Linux, MacOSX y Windows (con msysgit).
Use git la para mostrar alias en .gitconfig
¿Escuché 'scripting bash'? ;)
Sobre la parte 'no necesaria' en un comentario anterior, básicamente creé una página de manual como resumen para mis alias. ¿Por qué tanto alboroto? ¿No es una exageración completa?
Sigue leyendo ...
He configurado los comandos como este en mi .gitconfig, separados como TAB=TAB:
y simplemente definió otro alias para grep la TAB=parte de los alias definidos. (Todas las demás opciones no tienen pestañas antes y después del '=' en su definición, solo espacios).
Los comentarios no agregados a un alias también tienen un TAB=====anexo, por lo que se muestran después del grepping.
Para una mejor visualización, estoy canalizando la salida grep en menos, así:
versión básica: (negro / blanco)
La parte '
\t=
' coincide TAB=.Para tener una mejor visión general de los alias que tengo, y desde que uso la consola bash, coloreé la salida con colores de terminal:
versión avanzada: (coloreada)
Básicamente igual que el anterior, solo se agrega el uso de sed para obtener los códigos de color en la salida.
La
-R
bandera de menos es necesaria para obtener los colores que se muestran en menos.(Recientemente descubrí que los comandos largos con una barra de desplazamiento debajo de su ventana no se muestran correctamente en los dispositivos móviles: el texto está cortado y simplemente falta la barra de desplazamiento. Ese podría ser el caso con el último fragmento de código aquí, manténgalo en importa cuando mires fragmentos de código aquí mientras estás en movimiento).
¿Por qué hacer que funcione tanta magia?
Tengo como media milla de alias, adaptados a mis necesidades.
Además, algunos de ellos cambian con el tiempo , por lo que, después de todo, la mejor idea para tener una lista actualizada es analizar el .gitconfig.
Un extracto breve **** de mis alias .gitconfig:
En mis estaciones de trabajo Linux o Mac también existen más alias en los .bashrc, algo así como:
De esa manera, no es necesario escribir
git help submodule
, no es necesariogit h submodule
, sologh submodule
es todo lo que se necesita para obtener la ayuda. Son solo algunos caracteres, pero ¿con qué frecuencia los escribe?Uso todo lo siguiente, por supuesto solo con atajos ...
Esto fue solo desde lo alto de mi cabeza.
A menudo tengo que usar git sin una interfaz gráfica de usuario, ya que muchos de los comandos de git no se implementan correctamente en ninguna de las interfaces gráficas. Pero cada vez que los uso, es principalmente de la misma manera.
En la parte 'no implementada' mencionada en el último párrafo:
todavía tengo que encontrar algo que se compare con esto en una GUI:
sba = show-branch --color=always -a --more=10 --no-name
- muestre todas las ramas locales y remotas, así como las confirmaciones que tienen dentro de ellasccm = "!git reset --soft HEAD~ && git commit"
- cambie el último mensaje de confirmaciónDesde un punto de vista que es más simple:
¿con qué frecuencia escribe
git add .
ogit commit -am "..."
? Sin contar ni el resto ...Conseguir que las cosas funcionen como
git aa
ogit ca "..."
en Windows,o con alias bash
gaa
/g aa
ogca "..."
/g ca "..."
en Linux y en Mac ...Para mis necesidades, parecía una cosa inteligente de hacer, personalizar comandos de git como este ...
... y para un uso más fácil, solo me ayudé a mí mismo para comandos menos utilizados, así que no tengo que consultar las páginas de manual cada vez. Los comandos están predefinidos y buscarlos es lo más fácil posible.
Quiero decir, ¿somos programadores después de todo? Hacer que las cosas funcionen como las necesitamos es nuestro trabajo.
Aquí hay una captura de pantalla adicional, esto funciona en Windows:
BONIFICACIÓN: si está en Linux o Mac, las páginas man coloreadas pueden ayudarlo un poco:
páginas man coloreadas
fuente
la = "!grep '\t=' ~/.gitconfig | less"
TAB
precedente cada=
? Con espacios no funcionará. Yo mismo tenía espacios en mis ventanas.gitconfig
, una vez que los reemplacé con una sola pestaña, cmd.exe se comporta como se esperaba.Usando
git var
y filtrando solo aquellos que comienzan conalias
:fuente
Como se mencionó en otras respuestas,
git config -l
enumera todos los detalles de configuración de su archivo de configuración. Aquí hay un ejemplo parcial de esa salida para mi configuración:Entonces podemos extraer las líneas de alias, usando
git config -l | grep alias
:Podemos hacer esto más bonito simplemente
cut
señalando laalias.
parte de cada línea, dejándonos con este comando:Que imprime:
Por último, no olvides agregar esto como un alias:
¡Disfrutar!
fuente
para ventanas:
fuente
Mencioné en junio de 2018 con la " lista de resumen: los comandos de git más utilizados ", el Git 2.18 "use
--list-cmds=alias
( commit 3301d36 )", que carej informa en su respuesta .Además de eso o de
git config --get-regexp alias
, puede combinar su salida congit help
, cuya salida cambiará con Git 2.14.x / 2.15:Ver commit b3a8076 (12 de septiembre de 2017) por Kaartic Sivaraam (
sivaraam
) .(Fusionada por Junio C Hamano -
gitster
- en commit 5079cc8 , 25 sep 2017)fuente
Buscar o mostrar todos los alias
Añadir a su
.gitconfig
debajo[alias]
:Entonces puedes hacer
git aliases
- mostrar TODOS los aliasgit aliases commit
- solo alias que contienen "commit"fuente
Yo uso este alias en mi global
~/.gitconfig
para producir el siguiente resultado
( Nota: Esto funciona para mí en git bash en Windows . Para otros terminales, es posible que deba adaptar el escape ) .
Explicación
!git config --get-regexp ^alias\\.
imprime todas las líneas de git config que comienzan conalias.
sed -e s/^alias.//
eliminaalias.
de la líneased -e s/\\ /\\ $(printf \"\\043\")--\\>\\ /
reemplaza la primera aparición de un espacio con\\ $(printf \"\\043\")--\\>
(que se evalúa como#-->
).column -t -s $(printf \"\\043\")
formatea todas las líneas en una tabla de columnas espaciadas uniformemente. El carácter$(printf \"\\043\")
que evalúa#
se utiliza como separador.sort -k 1
ordena todas las líneas según el valor de la primera columna$ (printf \ "\ 043 \")
Esto solo imprime el carácter
#
(hexadecimal 043) que se utiliza para la separación de columnas. Utilizo este pequeño truco para que elaliases
alias en sí no contenga literalmente el#
personaje. De lo contrario, reemplazaría esos#
caracteres al imprimir. Nota : Cambie esto a otro carácter si necesita alias con#
signos literales .fuente
Hay una función incorporada ... intente
enumera todos los alias :)
fuente
$
denota el símbolo del terminal de Linux típico. Escriba el resto de esta línea en dicho terminal y presioneENTER
y salga una lista de sus alias. Funciona tanto en Linux como en Windows (git bash) porque está integrado en git. (Probablemente sea una función que git usa internamente para resolver alias cuando se usan en la línea de comando).Si conoce el nombre del alias, puede usar la
--help
opción para describirlo. Por ejemplo:fuente
A partir de git 2.18 puedes usar
git --list-cmds=alias
fuente
Otro
git
alias (llamadoalias
) que imprime alias git: agregue lo siguiente a su[alias]
sección gitconfig :Ejemplo de uso, dando el nombre completo del alias (coincide exactamente con el nombre del alias: es decir,
^foobar$
), y simplemente muestra el valor:O bien, proporcione regexp, que muestra todos los alias y valores coincidentes:
Advertencias: cite la expresión regular para evitar la expansión de la shell como un globo, aunque no es técnicamente necesario si / cuando ningún archivo coincide con el patrón. Además: cualquier expresión regular está bien, excepto que no se puede usar
^
(inicio del patrón) y$
(final del patrón); Están implícitos. Asume que no está utilizandogit-alias
desdegit-extras
.Además, obviamente sus alias serán diferentes; Estos son solo algunos que he configurado. (Quizás los encuentres útiles también).
fuente