tag - tipos de etiquetas en git
¿Cómo hago alias comandos en git? (17)
Vi un screencast donde alguien había conseguido
git st
git ci
trabajar. Cuando lo hago me sale un error preguntándome si quiero decir algo más.
Al ser un git newb, ¿necesito saber qué debes hacer para que esto se haga?
A continuación se muestran los 4 accesos directos o alias de git que se utilizan para ahorrar tiempo.
Abra la línea de comandos y escriba estos 4 comandos a continuación 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
¡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
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, puedes hacer git a
lugar de git add
por ejemplo. Lo mismo se aplica a otros comandos bajo el encabezado de alias.
Aquí se dan los Alias. Incluso aquí hay respuestas geniales, agregué esto porque difiere en Windows y Linux.
Básicamente solo necesitas agregar líneas a ~/.gitconfig
[alias]
st = status
ci = commit -v
O puedes 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 aliases .
Como han dicho otros, la forma adecuada de agregar alias de git es en su archivo .gitconfig
global, ya sea editando ~/.gitconfig
o usando el 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 está usando bash, recomendaría configurar la finalización de bash copiando git-completion.bash
a su directorio de inicio y obteniéndolo de su ~/.bashrc
. (Creo que aprendí sobre esto en el libro en línea de 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 de bash funcionará no solo para los comandos git estándar, sino también para sus alias de git.
Finalmente, para reducir realmente las pulsaciones de teclado, agregué lo siguiente a mi archivo ~/.bash_aliases
, que proviene 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''
Creo que el gitconfig más útil es así, siempre usamos la función 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
Esto creará un st
alias para el status
:
git config --add alias.st status
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)
Necesitas el comando git config alias
. Ejecuta lo siguiente en un repositorio Git:
git config alias.ci commit
Para el alias global:
git config --global alias.ci commit
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 accesos directos a su disposición en la ventana de cmd.
Por ejemplo (gc.bat):
git commit -m %1
Luego puedes ejecutar el siguiente comando en la consola:
gc "changed stuff"
La razón por la que estoy agregando esto como respuesta es que al usar esto no está limitado a git ...
solo comandos.
Para aquellos que buscan ejecutar comandos de shell en un alias de git , por ejemplo:
$ git pof
En mi terminal empujaré 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)
comando devuelve la rama actual.
Este es un atajo para escribir manualmente el nombre de la rama:
git push origin -f <current-branch>
Puede alias los comandos git y non-git. Parece que esto fue agregado en la versión 1.5. Un fragmento de la página de git config --help
en la versión 2.5.4 en mi Mac muestra:
Si la expansión de alias tiene un prefijo con un signo de exclamación, se tratará como un comando de shell.
Por ejemplo, en su archivo .gitconfig
global podría tener:
[alias]
st = status
hi = !echo ''hello''
Y luego ejecútalos:
$ git hi
hello
$ git st
On branch master
...
Puedes configurar alias de git personalizados 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 combinación, ejecute:
git config --global alias.conflicts "diff --name-only --diff-filter=U"
Ahora puedes usar el comando anterior solo usando "conflictos":
git conflicts
# same as running: git diff --name-only --diff-filter=U
Si desea una alternativa a la opción ~/.gitconfig
y se abre 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: gt
), y luego filtraría 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 npm utiliza este método: https://github.com/alexmacarthur/christian-git
Solo para obtener los alias aún más cortos que la forma estándar de configuración de git que se menciona en otras respuestas, creé un paquete 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 tus archivos de puntos, funciona en osx, linux y windows. Además, a diferencia de los otros alias, alias git
-> g
, así como el segundo parámetro.
También puede encadenar comandos si usa el ''!'' operador para engendrar una concha:
aa = !git add -A && git status
Esto agregará todos los archivos y le dará un informe de estado con $ git aa
.
Para una forma práctica de verificar sus alias, agregue este alias:
alias = config --get-regexp ^alias//.
Luego, un rápido $ git alias
te da tus alias actuales y lo que hacen.
$ 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.