How can I debug git/git-shell related problems?

前端 未结 8 1572
说谎
说谎 2020-11-22 15:16

How can I have some debug information regarding git/git-shell?

I had a problem, that user1 could clone a repository without problem, while user2<

相关标签:
8条回答
  • 2020-11-22 15:43

    If its over SSH, you can use the following:

    For a higher debug level for type -vv or -vvv for debug level 2 and 3 respectively:

    # 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>
    

    This is mainly useful to handle public and private key problems with the server. You can use this command for any git command, not only 'git clone'.

    0 讨论(0)
  • 2020-11-22 15:46

    Debugging

    Git has a fairly complete set of traces embedded which you can use to debug your git problems.

    To turn them on, you can define the following variables:

    • GIT_TRACE for general traces,
    • GIT_TRACE_PACK_ACCESS for tracing of packfile access,
    • GIT_TRACE_PACKET for packet-level tracing for network operations,
    • GIT_TRACE_PERFORMANCE for logging the performance data,
    • GIT_TRACE_SETUP for information about discovering the repository and environment it’s interacting with,
    • GIT_MERGE_VERBOSITY for debugging recursive merge strategy (values: 0-5),
    • GIT_CURL_VERBOSE for logging all curl messages (equivalent to curl -v),
    • GIT_TRACE_SHALLOW for debugging fetching/cloning of shallow repositories.

    Possible values can include:

    • true, 1 or 2 to write to stderr,
    • an absolute path starting with / to trace output to the specified file.

    For more details, see: Git Internals - Environment Variables


    SSH

    For SSH issues, try the following commands:

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

    or use ssh to validate your credentials, e.g.

    ssh -vvvT git@github.com
    

    or over HTTPS port:

    ssh -vvvT -p 443 git@ssh.github.com
    

    Note: Reduce number of -v to reduce the verbosity level.


    Examples

    $ 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
    ...
    
    0 讨论(0)
提交回复
热议问题