我怎么能有一些关于git/git-shell的调试信息?

我遇到了一个问题,user1可以毫无问题地克隆一个存储库,而user2只能克隆一个空的存储库。我设置了GIT_TRACE=1,但是没有任何有用的提示。

最后,经过长时间的尝试和错误,发现这是一个文件的权限问题。适当的错误消息可以避免此问题。


当前回答

要获得更详细的输出,请使用以下方法:

GIT_CURL_VERBOSE=1 GIT_TRACE=1 git拉源主

其他回答

您是否尝试在克隆时添加详细(-v)操作符?

Git克隆-v Git://git.kernel.org/pub/scm/.../linux-2.6 my2.6

试试这个:

GIT_TRACE=1 git pull origin master

调试

Git有一个相当完整的嵌入式跟踪集,您可以使用它来调试Git问题。

要打开它们,你可以定义以下变量:

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.

可能的值包括:

True, 1或2写入stderr, 以/开头的绝对路径,用于跟踪到指定文件的输出。

更多详细信息,请参见:Git内部-环境变量


SSH

对于SSH问题,请尝试以下命令:

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

或者使用SSH来验证您的凭证,例如。

ssh -vvvT git@github.com

或HTTPS端口:

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

注意:减少-v的个数以减少冗长级别。


例子

$ 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
...

要获得更详细的输出,请使用以下方法:

GIT_CURL_VERBOSE=1 GIT_TRACE=1 git拉源主

如果是SSH,你可以使用以下命令:

对于更高的调试级别,类型-vv或-vvv分别用于调试级别2和3:

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

这主要用于处理服务器的公钥和私钥问题。 你可以将此命令用于任何git命令,而不仅仅是'git clone'。