repositorio - git push tag
Establecer git flags por defecto en los comandos (7)
Quiero saber si hay una manera de establecer un indicador por defecto para el comando git. Específicamente, quiero establecer el --abbrev-commit
para que cuando ejecute git log
, quiero ejecutar git log --abbrev-commit
.
A diferencia de la pregunta " ¿hay alguna forma de establecer un indicador por defecto para un comando git? ", Aparentemente no hay un indicador de configuración para agregar --abbrev-commit a git log. Además, el manual de git establece que no puedo crear un alias: "Para evitar confusiones y problemas con el uso de scripts, se ignoran los alias que ocultan los comandos de git existentes"
Mi tercera opción es inventar un nuevo alias como glog=log --abbrev-commit
en mi archivo .gitconfig. Pero prefiero no inventar mi propia DSL con nuevos comandos.
¿Hay alguna otra forma de lograrlo para que el indicador de abbrev-commit
esté establecido por defecto?
Cada utilidad que utilizamos (svn, maven, git, ...) siempre se encapsula en .bat (en Windows, o .sh en Unix), para ofrecer a nuestros desarrolladores un directorio para agregar a su ruta.
Si git está encapsulado en un script de envoltura, entonces ... todo es posible.
Pero eso sigue siendo una solución vinculada a la configuración del usuario, no vinculada a Git ni a Git Repo.
Desde la versión 1.7.6 de git, git config ha obtenido una opción log.abbrevCommit que se puede establecer en verdadero. Por lo tanto, la respuesta es la actualización a al menos 1.7.6 (actual a partir de este escrito es 1.7.11.4) y uso:
git config --global log.abbrevCommit true
Me gusta el git log --oneline
formato de línea. Para obtenerlo como predeterminado, use
git config --global format.pretty oneline
Crédito: https://willi.am/blog/2015/02/19/customize-your-git-log-format/
No hay un mecanismo genérico en git para establecer los argumentos predeterminados para los comandos.
Puede usar los alias de git para definir un nuevo comando con los argumentos requeridos:
git config alias.lg "log --oneline"
Entonces puedes ejecutar git lg
.
Algunos comandos también tienen configuraciones para cambiar su comportamiento.
Puede usar un formato personalizado para tener git log
mimic --abbrev-commit
de forma predeterminada:
git config format.pretty "format:%h %s"
Tengo un problema similar (muchas de las opciones predeterminadas para los comandos de Git son tontas). Aquí está mi enfoque. Cree un script llamado ''grit'' (o lo que sea) en su ruta, de la siguiente manera:
#!/bin/bash
cmd=$1
shift 1
if [ "$cmd" = "" ]; then
git
elif [ $cmd = "log" ]; then
git log --abbrev-commit $@
elif [ $cmd = "branch" ]; then
git branch -v $@
elif [ $cmd = "remote" ]; then
git remote -v $@
else
git $cmd $@
fi
Muy sencillo de leer y mantener, en caso de que necesite compartirlo con Bash no expertos.
VonC ya ha insinuado una envoltura de caparazón en su respuesta; aquí está mi implementación Bash de tal envoltorio. Si pones esto, por ejemplo, en tu .bashrc
, tu caparazón interactivo soportará la anulación de los comandos incorporados de Git, así como los alias en mayúsculas.
# Git supports aliases defined in .gitconfig, but you cannot override Git
# builtins (e.g. "git log") by putting an executable "git-log" somewhere in the
# PATH. Also, git aliases are case-insensitive, but case can be useful to create
# a negated command (gf = grep --files-with-matches; gF = grep
# --files-without-match). As a workaround, translate "X" to "-x".
git()
{
typeset -r gitAlias="git-$1"
if ''which'' "$gitAlias" >/dev/null 2>&1; then
shift
"$gitAlias" "$@"
elif [[ "$1" =~ [A-Z] ]]; then
# Translate "X" to "-x" to enable aliases with uppercase letters.
translatedAlias=$(echo "$1" | sed -e ''s/[A-Z]/-/l/0/g'')
shift
"$(which git)" "$translatedAlias" "$@"
else
"$(which git)" "$@"
fi
}
A continuación, puede anular el git log
colocando un script llamado git-log
en algún lugar de su RUTA:
#!/bin/sh
git log --abbrev-commit "$@"