Abreviaturas integradas
Más allá de los alias, Git tiene una serie de notaciones abreviadas integradas que ahorran escritura.
Relativos a HEAD
HEAD # commit actual
HEAD~ # uno antes
HEAD~1 # también uno antes
HEAD~5 # cinco antes
HEAD^ # primer padre de HEAD
HEAD^^ # padre del padre
HEAD^2 # segundo padre (merge)
HEAD^{tree} # el objeto tree de HEAD
Referencias del reflog
HEAD@{1} # HEAD antes de su último movimiento
HEAD@{yesterday} # HEAD a partir de ayer
HEAD@{2.hours.ago}
main@{push}
Abreviatura de branch
git checkout - # branch anterior (como cd -)
git switch -
git merge @{u} # mergear desde upstream
git rebase @{u}
git push HEAD
Abreviatura de SHA
git show abc # funciona si "abc" es único
git checkout abc1234
git config --global core.abbrev 12
Abreviatura de rangos
main..feature # commits en feature no en main
main...feature # diferencia simétrica
feature^@ # todos los padres de feature
feature^! # feature mismo, excluyendo padres
Abreviatura de pathspec
git add :/ # raíz del repo
git checkout -- :/some-path
git diff -- '*.js'
git diff -- ':!vendor/'
El separador --
git checkout main # branch
git checkout -- main # ruta
git diff master file # ambiguo
git diff master -- file # inequívocamente una ruta
Flags útiles de un carácter
git commit -a # añadir archivos rastreados y commitear
git commit -am "msg"
git pull -r # rebase en lugar de merge
git push -u # establecer upstream
git log -p
git log -S 'string'
git log -G 'regex'
Variables de entorno útiles
GIT_EDITOR=vim git commit
GIT_AUTHOR_DATE='2024-01-01T12:00:00' git commit -m "backdated"
GIT_PAGER=cat git log
GIT_TRACE=1 git fetch
Abreviaturas de configuración
git config --global -e
git config -l
git config --get-regexp '^alias\\.'