¿Cómo alias los comandos en git?


619

Vi un screencast donde alguien había recibido

git st
git ci

trabajar. Cuando lo hago, aparece un error que me pregunta si quise decir algo más.
Siendo un git newb, ¿necesito saber qué tienes que hacer para hacer esto?



También vea más preguntas sobre el uso más avanzado de alias git aquí: stackoverflow.com/questions/46528736/…
NeilG

Respuestas:


977

Básicamente solo necesitas agregar líneas a ~/.gitconfig

[alias]
    st = status
    ci = commit -v

O puede usar el comando git config alias:

$ git config --global alias.st status 

En Unix, use comillas simples si el alias tiene un espacio:

$ git config --global alias.ci 'commit -v'

En Windows, use comillas dobles si el alias tiene un espacio o un argumento de línea de comando:

c:\dev> git config --global alias.ci "commit -v"

El comando alias incluso acepta funciones como parámetros. Echa un vistazo a los alias .


86
Le recomiendo que use git config --globalpara colocar los alias en ~/.gitconfiglugar de .git/configpara su repositorio actual.
Cascabel

27
Prefiero la configuración sta status -s(estado corto)
hasen

20
Esto es realmente asombroso. He estado buscando esto. Solo un aviso, si tienes un comando con espacios que deberías usar 'comogit config --global alias.sr 'svn rebase'
Amir Raminfar

1
@HellishHeat Estos alias son creados por git, para git. Si desea alias para algún otro sistema de línea de comandos, tendrá que buscar cómo hacer ese sistema. (Parece que está utilizando un sistema similar a Unix, y sé que crear alias en Unices es bastante simple. Sin embargo, la sintaxis es diferente. Intente una búsqueda en Google.)
Michael Dorst

17
Solo otro aviso, si está usando Git en la línea de comandos de Windows, entonces necesitará usar comillas dobles en "lugar de comillas simples al agregar comandos con espacios, por ejemplogit config --global alias.ci "commit -v"
ABVincita

179

Como otros han dicho, la forma apropiada de agregar alias git es en su .gitconfigarchivo global editando ~/.gitconfigo usando elgit config --global alias.<alias> <git-command> comando

A continuación hay una copia de la sección de alias de mi ~/.gitconfigarchivo:

[alias]
    st = status
    ci = commit
    co = checkout
    br = branch
    unstage = reset HEAD --
    last = log -1 HEAD

Además, si está utilizando bash, recomendaría configurar la finalización de bash copiando git-completion.bashen su directorio de inicio y obteniéndolo de su ~/.bashrc. (Creo que aprendí sobre esto del libro en línea Pro Git ). En Mac OS X, logré esto con los siguientes comandos:

# Copy git-completion.bash to home directory
cp usr/local/git/contrib/completion/git-completion.bash ~/

# Add the following lines to ~/.bashrc
if [ -x /usr/local/git/bin/git ]; then
    source ~/.git-completion.bash
fi

Nota: La finalización de bash funcionará no solo para los comandos git estándar sino también para sus alias git.

Finalmente, para reducir realmente las pulsaciones de teclas, agregué lo siguiente a mi ~/.bash_aliasesarchivo, que se obtiene de ~/.bashrc:

alias gst='git status'
alias gl='git pull'
alias gp='git push'
alias gd='git diff | mate'
alias gau='git add --update'
alias gc='git commit -v'
alias gca='git commit -v -a'
alias gb='git branch'
alias gba='git branch -a'
alias gco='git checkout'
alias gcob='git checkout -b'
alias gcot='git checkout -t'
alias gcotb='git checkout --track -b'
alias glog='git log'
alias glogp='git log --pretty=format:"%h %s" --graph'

2
Para Linux, hice esto para obtener las cosas de git-completar.bash: blogs.oracle.com/linuxnstuff/entry/…
Duncan Lock

10
Si usa zsh, la excelente suite oh-my-zsh contiene un complemento con todos esos alias git "estándar" - github.com/robbyrussell/oh-my-zsh/blob/master/plugins/git/… - para bash , eche un vistazo a github.com/revans/bash-it
jobwat

pregunta novata: ¿qué significa "ser originario de" ~/.bashrcarchivo?
ahnbizcad

1
~/.bashrc: para realmente reducir las pulsaciones de teclas. Exactamente lo que estaba buscando.
parasrish

¡Esta respuesta es un ejemplo perfecto de por qué sugiero usar un .gitconfig include en mi respuesta! stackoverflow.com/a/59896430/117471
Bruno Bronosky

65

Creo que el gitconfig más útil es así, siempre usamos la función del 20% en git, puedes probar el "g ll", es increíble, los detalles:

[user]
    name = my name
    email = me@example.com
[core]  
    editor = vi 
[alias]
    aa = add --all
    bv = branch -vv
    ba = branch -ra
    bd = branch -d
    ca = commit --amend
    cb = checkout -b
    cm = commit -a --amend -C HEAD
    ci = commit -a -v
    co = checkout
    di = diff
    ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat
    ld = log --pretty=format:"%C(yellow)%h\\ %C(green)%ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=short --graph
    ls = log --pretty=format:"%C(green)%h\\ %C(yellow)[%ad]%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=relative
    mm = merge --no-ff
    st = status --short --branch
    tg = tag -a 
    pu = push --tags
    un = reset --hard HEAD  
    uh = reset --hard HEAD^
   [color]  
    diff = auto  
    status = auto  
    branch = auto 
   [branch]  
    autosetuprebase = always

¿Cómo se configura esto? ¿Qué pones donde hacer esto?
ahnbizcad

3
@ahnbizcad Coloque en ~ / .gitconfig si configura git --global; de lo contrario, entrará en .git / config del repositorio actual
shmup

19

Necesitas el git config aliascomando. Ejecute lo siguiente en un repositorio de Git:

git config alias.ci commit

Para alias global:

git config --global alias.ci commit

11

Esto funcionó para mí:

bco = "!f(){ git branch ${1} && git checkout ${1}; };f"

en:

$ git --version

git version 1.7.7.5 (Apple Git-26)

1
También puede hacer: git config --global alias.bco 'checkout -b'. Entonces podrías hacer: git bco new-branch. :)
Russell

44
Me gusta git cob. Me recuerda al verano, como en la mazorca de maíz. en realidad es una gran palabra que no pensamos lo suficiente ... mazorca que es
Мати Тернер

44
En caso de que esta sea la primera vez que alguien que no sea yo haya visto un comando git alias !, tenga en cuenta que Since version 1.5.0, Git supports aliases executing non-git commands, by prefixing the value with "!"( ref )
Sam

9

Esto creará un alias stpara status:

git config --add alias.st status


Necesitaba el --add y usar comillas dobles, no comillas simples
Alineado el

¿Por qué git stcuando puedes usarlo? git sDeshágase de eso s: P
Abdullah

7

Follwing son los 4 atajos de git o alias que puedes usar para ahorrar tiempo.

Abra la línea de comandos y escriba estos 4 comandos a continuación y use los atajos después.

git config --global alias.co checkout  
git config --global alias.ci commit    
git config --global alias.st status    
git config --global alias.br branch  

¡Ahora pruébalos!

$ git co              # use git co instead of git checkout
$ git ci              # use git ci instead of git commit
$ git st              # use git st instead of git status
$ git br              # use git br instead of git branch

6

Para aquellos que buscan ejecutar comandos de shell en un alias git , por ejemplo:

$ git pof

En mi terminal empujaré forzar la rama actual a mi repositorio de origen:

[alias]
    pof = !git push origin -f $(git branch | grep \\* | cut -d ' ' -f2)

Donde el

$(git branch | grep \\* | cut -d ' ' -f2)

El comando devuelve la rama actual.

Este es un acceso directo para escribir manualmente el nombre de la rama:

git push origin -f <current-branch>

1
¿Por qué no "simplemente" git push -f origin HEADempujar la rama actual a su contraparte remota? Además, ¿un atajo para empujar con fuerza? Si tiene que empujar la fuerza con la frecuencia suficiente para beneficiarse de un atajo, ¿no le pasa algo a otra parte de su configuración o flujo de trabajo?
RomainValeri

Bash se mezcló creando el alias (reemplazando !gitcon el último comando git), pero la edición manual del archivo de configuración hizo el truco.
H. de Jonge

5

Puede alias tanto los comandos git como los que no son git. Parece que esto se agregó en la versión 1.5. Un fragmento de la git config --helppágina en la versión 2.5.4 en mi Mac muestra:

Si la expansión del alias tiene el prefijo de un signo de exclamación, se tratará como un comando de shell.

Por ejemplo, en su .gitconfigarchivo global podría tener:

[alias]
    st = status
    hi = !echo 'hello'

Y luego ejecutarlos:

$ git hi
hello
$ git st
On branch master

...

5

Agregue las siguientes líneas a su ~ / .gitconfig en su directorio de inicio

[alias]
# one-line log
l = log --pretty=format:"%C(yellow)%h\\ %ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=short
ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat
ld = log --pretty=format:"%C(yellow)%h\\ %C(green)%ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=short --graph
ls = log --pretty=format:"%C(green)%h\\ %C(yellow)[%ad]%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=relative

a = add
ap = add -p
c = commit --verbose
ca = commit -a --verbose
cm = commit -m
cam = commit -a -m
m = commit --amend --verbose

d = diff
ds = diff --stat
dc = diff --cached

s = status -s
co = checkout
cob = checkout -b
# list branches sorted by last modified
b = "!git for-each-ref --sort='-authordate' --format='%(authordate)%09%(objectname:short)%09%(refname)' refs/heads | sed -e 's-refs/heads/--'"

# list aliases
la = "!git config -l | grep alias | cut -c 7-"

Una vez hecho esto, puede hacerlo en git alugar de, git addpor ejemplo. Lo mismo se aplica a otros comandos bajo el encabezado de alias.


4
actualización de $ git
git: 'actualizar' no es un comando git. Ver 'git --help'.

¿Te refieres a esto?
    actualización-ref

$ git config --global alias.update 'pull -v'

actualización de $ git
De git: //git.kernel.org/pub/scm/git/git
 = [actualizado] html -> origen / html
 = [actualizado] maint -> origen / maint
 = [actualizado] hombre -> origen / hombre
 = [actualizado] maestro -> origen / maestro
 = [actualizado] siguiente -> origen / siguiente
 = [actualizado] pu -> origen / pu
 = [actualizado] todo -> origen / todo
Ya está actualizado.

4

Creé el alias dogpara mostrar el gráfico de registro:

git config --global alias.dog "log --all --decorate --oneline --graph"

Y úsalo de la siguiente manera:

git dog

3

También puede encadenar comandos si usa '!' operador para generar un caparazón:

aa = !git add -A && git status

Esto agregará todos los archivos y le dará un informe de estado $ git aa.

Para una forma práctica de verificar sus alias, agregue este alias:

alias = config --get-regexp ^alias\\.

Luego, un rápido $ git aliasle brinda sus alias actuales y lo que hacen.


3

Puede establecer alias personalizados de git usando la configuración de git. Aquí está la sintaxis:

git config --global alias.<aliasName> "<git command>"

Por ejemplo, si necesita un alias para mostrar una lista de archivos que tienen conflictos de fusión, ejecute:

git config --global alias.conflicts "diff --name-only --diff-filter=U"

Ahora puede usar el comando anterior solo usando "conflictos":

git conflicts
# same as running: git diff --name-only --diff-filter=U

3

Para mí ( estoy usando mac con terminal ) solo funcionó cuando agregué .bash_profile y abrí otra pestaña para cargar el cambio:

alias gst="git status"
alias gd="git diff"
alias gl="git log"
alias gco="git commit"
alias gck="git checkout"
alias gl="git pull"
alias gpom="git pull origin master"
alias gp="git push"
alias gb="git branch"

2

Solo para obtener los alias aún más cortos que la forma de configuración estándar de git mencionada en otras respuestas, creé un paquete npm mingit ( npm install -g mingit) para que la mayoría de los comandos se conviertan en 2 caracteres en lugar de 2 palabras. Aquí están los ejemplos:

g a .                   // git add .
g b other-branch        // git branch other-branch
g c "made some changes" // git commit -m "made some changes"
g co master             // git checkout master
g d                     // git diff
g f                     // git fetch
g i                     // git init 
g m hotfix              // git merge hotfix
g pll                   // git pull
g psh                   // git push
g s                     // git status

y otros comandos serían igualmente cortos. Esto también mantiene las terminaciones de bash. El paquete agrega una función bash a sus archivos de puntos, funciona en osx, linux y windows. Además, a diferencia de los otros alias, alias git-> gasí como el segundo parámetro.


1
Gracias por crear el proyecto github.
biniam

2

Si desea una alternativa a la ~/.gitconfigopción y está abierto a cavar un poco más, otra opción es escribir comandos git completamente personalizados envolviéndolos en un paquete de nodo global.

En su package.json, definiría el comando raíz (ejemplo:) gty luego filtraría los comandos específicos para ejecutar los comandos git correctos. Por ejemplo, git checkout my-branchpodría ser gt co mybranch.

El paquete "christian-git" en npm utiliza este método: https://github.com/alexmacarthur/christian-git


1

Se da aquí Alias .Incluso hay grandes respuestas aquí, he añadido esto porque es diferente en Windows y Linux



1

Incluya múltiples archivos de alias en su .gitconfig

Sugiero usar un .gitconfig include para sus alias. Una vez que comience a crear alias, probablemente terminará con muchos de ellos. Es probable que sean algo que quieras compartir con los demás. Ponerlos en un archivo dedicado hace que sea fácil compartirlos. Su equipo incluso puede usar un repositorio git para mantener alias compartidos. Y, por supuesto, algunos alias que no querrás compartir, así que mantenlos en un archivo de alias privado.

[include]
    path=src/dotfiles/.gitaliases

[include]
    path=src/team-utils/gitaliases

[include]
    path=.gitaliases.private

-1

Otra posibilidad para Windows sería tener un directorio lleno de archivos .bat que contengan sus accesos directos. El nombre del archivo es el acceso directo que se utilizará. Simplemente agregue el directorio a su variable de entorno PATH y tendrá todos los accesos directos a su disposición en la ventana cmd.

Por ejemplo (gc.bat):

git commit -m %1

Luego puede ejecutar el siguiente comando en la consola:

gc "changed stuff"

La razón por la que agrego esto como respuesta es porque al usar esto no está limitado a git ...solo comandos.


1
Puede hacer lo mismo agregando alias de shell a su .profile, o .bashrc, o .bash_profile, dependiendo de su sistema. Entonces todos sus alias están en un solo archivo. Además, ese es el mecanismo estándar para realizar su tarea. La sección "alias de comando" muestra algunos alias de shell comúnmente definidos utilizados para los comandos de git. Hay mejores recursos y tutoriales sobre esto, simplemente es un enlace que tenía abierto.
SherylHohman
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.