2010-03-31 17 views
443

vi un screencast en la que alguien había conseguido¿Cómo alias los comandos en git?

git st 
git ci 

a trabajar. Cuando lo hago, recibo un error preguntándome si quería decir algo más.
Siendo un git newb, necesito saber lo que tienes que hacer para hacer esto?

+0

También puede ver aquí https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases – JayRizzo

Respuesta

702

Básicamente sólo tiene que añadir líneas a ~/.gitconfig

[alias] 
    st = status 
    ci = commit -v 

o puede utilizar el comando git config alias:

$ git config --global alias.st status 

En UNIX, utilice 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 una línea de comando nt:

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

El comando alias incluso acepta funciones como parámetros. Eche un vistazo al aliases.

+69

Le recomiendo que use 'git config --global' para colocar los alias en' ~/.gitconfig' en lugar de '.git/config' para su repositorio actual. – Cascabel

+3

¡Estoy de acuerdo! ... Editaré mi respuesta –

+22

Prefiero las configuraciones 'st' a' status -s' (estado corto) – hasen

7

Esto creará un alias para ststatus:

git config --add alias.st status

+0

necesitaba el. - añadir y usar comillas dobles, comillas simples no – Aligned

+0

Por qué 'git st' cuando se puede usar' s' git, deshacerse de ese 's': P – Abdullah

16

Se necesita el comando git config alias. Ejecutar el siguiente en un repositorio Git:

git config alias.ci commit 

Para Alias ​​global:

git config --global alias.ci commit 
4
$ git update 
git: 'update' is not a git command. See 'git --help'. 

Did you mean this? 
    update-ref 

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

$ git update 
From git://git.kernel.org/pub/scm/git/git 
= [up to date]  html  -> origin/html 
= [up to date]  maint  -> origin/maint 
= [up to date]  man  -> origin/man 
= [up to date]  master  -> origin/master 
= [up to date]  next  -> origin/next 
= [up to date]  pu   -> origin/pu 
= [up to date]  todo  -> origin/todo 
Already up-to-date.
138

Como otros han dicho que la forma apropiada de agregar alias Git es en su archivo mundial .gitconfig ya sea editando ~/.gitconfig o mediante el comando git config --global alias.<alias> <git-command>

A continuación se muestra una copia de la sección de alias de mi archivo ~/.gitconfig:

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

Además, si usted está utilizando bash, yo recomendaría la creación de finalización fiesta copiando git-completion.bash a su directorio personal y compra de componentes de tu ~/.bashrc. (. Creo que he aprendido acerca de esto desde el libro en línea Pro Git) En Mac OS X, lo logré 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 bash trabajar no sólo para los comandos estándar git pero también para tus alias de git.

Por último, para cortar muy abajo en las pulsaciones de teclado, que añade lo siguiente a mi archivo ~/.bash_aliases, 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, me hizo esto para conseguir las cosas git-completion.bash : https://blogs.oracle.com/linuxnstuff/entry/recommended_git-completionbash –

+0

gracias increíbles @Matthew Rankin –

+8

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

7

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 podría hacer: configuración de git --global alias.bco 'checkout -b'. Entonces podrías hacer: git bco new-branch. :) – Russell

+3

Me gusta 'git cob'. me recuerda el verano, como en el maíz en la mazorca. en realidad, es una gran palabra que no pensamos lo suficiente ... cob que es –

+3

En caso de que esta sea la primera vez que alguien que no sea yo haya visto un comando git alias que comience por '!', tenga en cuenta que 'Desde la versión 1.5.0, Git admite alias que ejecutan comandos que no son git, al agregar como prefijo el valor "!" '([Ref] (https://git.wiki.kernel.org/index.php/Aliases#Advanced)) – Sam

1

Se da aquí Aliases. Incluso allí son excelentes respuestas aquí, he añadido esto porque es diferente en Windows y Linux

47

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

[user] 
    name = my name 
    email = [email protected] 
[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 
+0

¿Cómo se configura esto? ¿arriba? ¿qué pones donde hacer esto? – ahnbizcad

+1

Lugar @ahnbizcad en ~/.gitconfig si git config --global en caso contrario va en .git/config del repositorio actual – Jared

5

Follwing son los 4 accesos directos o alias de git que se usan para ahorrar tiempo.

Abra la línea de comandos y escriba estos 4 comandos debajo y use los accesos directos 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 

¡Pruébalo ahora!

$ 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 
2

Sólo para obtener los alias incluso más corto que la forma estándar git config mencionado en otras respuestas, he creado un paquete de NPM mingit (npm install -g mingit) de manera que la mayoría de los comandos se convertirían 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 terminaciones de bash. El paquete agrega una función bash a tus archivos punto, funciona en osx, linux y windows. Además, a diferencia de los otros alias, alias git ->g, así como el segundo parámetro.

+1

Gracias por crear el proyecto github. –

5

Puede alias ambos comandos git y no git. Parece que esto fue agregado en la versión 1.5. Un fragmento de la página git config --help en la versión 2.5.4 en mi Mac muestra:

If the alias expansion is prefixed with an exclamation point, it will be treated as a shell command.

Por ejemplo, en el archivo mundial .gitconfig usted podría tener:

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

Y luego ejecutarlos:

$ git hi 
hello 
$ git st 
On branch master 

... 
1

También puede encadenar comandos si usa el '!' operador para desovar una concha:

aa = !git add -A && git status 

Esto tanto añadir todos los archivos y le dará un informe de estado con $ git aa.

Para una forma práctica para revisar sus alias, agregar este alias:

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

A continuación, una rápida $ git alias le da sus alias actuales y lo que hacen.

0

Otra posibilidad para Windows sería tener un directorio lleno de archivos .bat que tengan sus accesos directos en ellos. 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 atajos a su disposición en la ventana de cmd.

Por ejemplo (gc.bat):

git commit -m %1 

A continuación, puede ejecutar el siguiente comando en la consola:

gc "changed stuff" 

La razón por la que estoy añadiendo esto como una respuesta es porque cuando al utilizar esto, no está limitado a los comandos git ... only.

3

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

$ git pof 

En mi terminal fuerza de empuje la rama actual a mi origen repo:

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

Donde

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

devuelve la rama actual.

Así que este es un atajo para escribir manualmente el nombre de la sucursal:

git push origin -f <current-branch> 
0

Si quieres una alternativa a la opción ~/.gitconfig y abierto a la excavación en un poco más, otra opción es escribir comandos totalmente personalizada git envolviéndolos en un paquete de nodo global.

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

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

Cuestiones relacionadas