origin - git push example
Compruebe si el directorio actual es un repositorio de Git (11)
¿Has comprobado las funciones que ya están en la distribución de zsh? Vea esta entrada del blog sobre vcs_info en zsh.
ACTUALIZAR :
Parece que el enlace original fue eliminado y el autor cambió su dominio principal. Revisé google y creo que actualmente la publicación vinculada tiene el mismo contenido, pero no estoy seguro (fue hace mucho tiempo desde que revisé el enlace original).
Estoy escribiendo una serie de scripts para la administración de Git en zsh.
¿Cómo puedo verificar si el directorio actual es un repositorio de Git? (Cuando no estoy en un repositorio de Git, no quiero ejecutar un montón de comandos y obtener un montón de fatal: Not a git repository
respuesta al fatal: Not a git repository
).
Copiado del archivo de finalización de bash, la siguiente es una forma ingenua de hacerlo
# Copyright (C) 2006,2007 Shawn O. Pearce <[email protected]>
# Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/).
# Distributed under the GNU General Public License, version 2.0.
if [ -d .git ]; then
echo .git;
else
git rev-parse --git-dir 2> /dev/null;
fi;
Puedes envolverlo en una función o usarlo en un script.
Condensado en una condición de una línea adecuada para bash o zsh
[ -d .git ] || git rev-parse --git-dir > /dev/null 2>&1
No estoy seguro de si hay una forma accesible / documentada públicamente para hacer esto (hay algunas funciones internas de Git que puede usar / abusar en la propia fuente git)
Podrías hacer algo como;
if ! git ls-files >& /dev/null; then
echo "not in git"
fi
O podrías hacer esto:
inside_git_repo="$(git rev-parse --is-inside-work-tree 2>/dev/null)"
if [ "$inside_git_repo" ]; then
echo "inside git repo"
else
echo "not in git repo"
fi
Otra solución es verificar el código de salida del comando.
git rev-parse 2> /dev/null; [ $? == 0 ] && echo 1
Esto imprimirá 1 si estás en una carpeta de repositorio de git.
Puedes usar:
git rev-parse --is-inside-work-tree
Que imprimirá ''verdadero'' si está en un árbol de trabajo de repositorios git.
Tenga en cuenta que aún devuelve la salida a STDERR si está fuera de un repositorio de git (y no imprime ''falso'').
Tomado de esta respuesta: https://.com/a/2044714/12983
Una opción muy rápida es http://vc.gerg.ca/hg/vcprompt/ .. multi-VC, en C, sin dependencias que no sean ellas mismas.
Utilice git rev-parse --git-dir
if git rev-parse --git-dir > /dev/null 2>&1; then : # This is a valid git repository (but the current working # directory may not be the top level. # Check the output of the git rev-parse command if you care) else : # this is not a git repository fi
Ver también:
git rev-parse --is-inside-work-tree
(descubierto leyendo hombre git-rev-parse)
esto funciona para mi Aún obtienes los errores, pero son bastante fáciles de suprimir. ¡también funciona desde subcarpetas!
estado de git> / dev / null 2> & 1 && echo ¡Hola mundo!
Puede poner esto en una declaración if then si necesita hacer más condicionalmente.