¿Cómo puedo depurar problemas relacionados con git/git-shell?

Resuelto Andor asked hace 13 años • 0 respuestas

¿Cómo puedo obtener información de depuración sobre git/git-shell?

Tuve un problema, que user1podía clonar un repositorio sin problema, mientras que user2solo podía clonar uno vacío. Lo había configurado GIT_TRACE=1, pero no se dijo nada útil.

Finalmente, después de una larga prueba y error, resultó que se trataba de un problema de permisos en un archivo. Un mensaje de error apropiado podría provocar un cortocircuito en este problema.

Andor avatar May 30 '11 22:05 Andor
Aceptado

Para obtener resultados aún más detallados, utilice lo siguiente:

GIT_CURL_VERBOSE=1 GIT_TRACE=1 git pull origin master

WTK avatar Jun 27 '2013 13:06 WTK

Depuración

Git tiene un conjunto bastante completo de seguimientos integrados que puedes usar para depurar tus problemas de git.

Para activarlos, puede definir las siguientes variables:

  • GIT_TRACEpara rastros generales,
  • GIT_TRACE_PACK_ACCESSpara rastrear el acceso al archivo pack,
  • GIT_TRACE_PACKETpara el seguimiento a nivel de paquetes para operaciones de red,
  • GIT_TRACE_PERFORMANCEpara registrar los datos de rendimiento,
  • GIT_TRACE_SETUPpara obtener información sobre cómo descubrir el repositorio y el entorno con el que interactúa,
  • GIT_MERGE_VERBOSITYpara depurar la estrategia de fusión recursiva (valores: 0-5),
  • GIT_CURL_VERBOSEpara registrar todos los mensajes curl (equivalente a curl -v),
  • GIT_TRACE_SHALLOWpara depurar, buscar/clonar repositorios poco profundos.

Los valores posibles pueden incluir:

  • true, 1o 2escribir en stderr,
  • una ruta absoluta que comienza con /para rastrear la salida hasta el archivo especificado.

Para obtener más detalles, consulte: Componentes internos de Git: variables de entorno


SSH

Para problemas de SSH, pruebe los siguientes comandos:

echo 'ssh -vvv "$*"' > ssh && chmod +x ssh
GIT_SSH="$PWD/ssh" git pull origin master

o utilizar sshpara validar sus credenciales, por ejemplo

ssh -vvvT [email protected]

o a través del puerto HTTPS:

ssh -vvvT -p 443 [email protected]

Nota: Reduzca el número de -vpara reducir el nivel de detalle.


Ejemplos

$ GIT_TRACE=1 git status
20:11:39.565701 git.c:350               trace: built-in: git 'status'

$ GIT_TRACE_PERFORMANCE=$PWD/gc.log git gc
Counting objects: 143760, done.
...
$ head gc.log 
20:12:37.214410 trace.c:420             performance: 0.090286000 s: git command: 'git' 'pack-refs' '--all' '--prune'
20:12:37.378101 trace.c:420             performance: 0.156971000 s: git command: 'git' 'reflog' 'expire' '--all'
...

$ GIT_TRACE_PACKET=true git pull origin master
20:16:53.062183 pkt-line.c:80           packet:        fetch< 93eb028c6b2f8b1d694d1173a4ddf32b48e371ce HEAD\0multi_ack thin-pack side-band side-band-64k ofs-delta shallow no-progress include-tag multi_ack_detailed symref=HEAD:refs/heads/master agent=git/2:2.6.5~update-ref-initial-update-1494-g76b680d
...
kenorb avatar Aug 01 '2016 19:08 kenorb

Si es sobre SSH, puedes usar lo siguiente:

Para un nivel de depuración más alto, escriba -vv o -vvv para los niveles de depuración 2 y 3 respectivamente:

# Debug level 1
GIT_SSH_COMMAND="ssh -v" git clone <repositoryurl>

# Debug level 2
GIT_SSH_COMMAND="ssh -vv" git clone <repositoryurl>

# Debug level 3
GIT_SSH_COMMAND="ssh -vvv" git clone <repositoryurl>

Esto es principalmente útil para manejar problemas de claves públicas y privadas con el servidor. Puede usar este comando para cualquier comando de git, no solo para 'git clone'.

Basil Musa avatar Jan 26 '2016 15:01 Basil Musa

prueba este:

GIT_TRACE=1 git pull origin master
C.C. avatar Dec 10 '2012 17:12 C.C.