我怎样才能debugginggit / git-shell相关的问题?
我怎样才能有一些关于git / git-shell的debugging信息?
我有一个问题,该user1
可以克隆一个存储库没有问题,而用户2只能克隆一个空的。 我已经设置了GIT_TRACE=1
,但没有任何有用的被告知。
最后经过漫长的反复试验,certificate这是一个文件的权限问题。 一个适当的错误消息可能会将此问题短路。
对于更详细的输出使用以下内容:
GIT_CURL_VERBOSE=1 GIT_TRACE=1 git pull origin master
试试这个:
GIT_TRACE=1 git pull origin master
如果它通过SSH,您可以使用以下内容:
对于types为-vv的更高debugging级别或对于debugging级别2和-3分别为-vvv的debugging级别:
# 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'。
debugging
Git有一个相当完整的跟踪embedded,你可以用它来debugging你的git问题。
要打开它们,您可以定义以下variables:
-
GIT_TRACE
用于一般痕迹, -
GIT_TRACE_PACK_ACCESS
用于跟踪packfile访问, -
GIT_TRACE_PACKET
用于networking操作的数据包级跟踪, -
GIT_TRACE_PERFORMANCE
用于logging性能数据, -
GIT_TRACE_SETUP
了解有关发现与其交互的存储库和环境的信息, -
GIT_MERGE_VERBOSITY
用于debuggingrecursion合并策略(值:0-5), -
GIT_CURL_VERBOSE
logging所有curl消息(相当于curl -v
), -
GIT_TRACE_SHALLOW
用于debugging浅存储库的获取/克隆。
可能的值可以包括:
-
true
,1
或2
写入stderr, - 以
/
开始的跟踪输出到指定文件的绝对path。
有关更多详细信息,请参阅: Git内部结构 – 环境variables
SSH
对于SSH问题,请尝试以下命令:
echo 'ssh -vvv $*' > ssh && chmod +x ssh GIT_SSH="$PWD/ssh" git pull origin master
或使用ssh
来validation您的凭据,例如
ssh -vvvT git@github.com
或通过HTTPS端口:
ssh -vvvT -p 443 git@ssh.github.com
注:减less-v
数量以减less详细程度。
例子
$ 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 2.9.x / 2.10(Q3 2016)增加了另一个debugging选项: GIT_TRACE_CURL
。
见Elia Pinto( devzero2000
) 提交73e57aa , 提交74c682d (2016年5月23日) 。
帮助: tboegi
( tboegi
) ,Ramsay Jones, Junio C gitster
( gitster
) , Eric Sunshine( sunshineco
)和Jeff King( peff
) 。
(由Junio C gitster
合并- gitster
– in commit 2f84df2 ,2016年7月6日)
http.c
:实现GIT_TRACE_CURL
环境variables实现
GIT_TRACE_CURL
环境variables以允许更大程度的GIT_CURL_VERBOSE
细节,特别是完整的传输头和所有的数据有效载荷交换。
如果某个特定的情况需要更彻底的debugging分析,这可能会很有用。
该文件将陈述:
GIT_TRACE_CURL
启用git传输协议的所有传入和传出数据(包括描述性信息)的curl完全跟踪转储。
这与在命令行上执行curl --trace-ascii
类似。此选项将覆盖设置
GIT_CURL_VERBOSE
环境variables。
你可以看到在这个答案中使用了新的选项,而且在Git 2.11(2016年第四季度)testing中:
请参阅Elia Pinto( devzero2000
)的 提交14e2411 , 提交81590bf , 提交4527aa1 , 提交4eee6c6 (2016年9月7日) 。
(由Junio C gitster
– gitster
-在930b67e ,9月12日提交 )
使用新的
GIT_TRACE_CURL
环境variables而不是弃用的GIT_CURL_VERBOSE
。
GIT_TRACE_CURL=true git clone --quiet $HTTPD_URL/smart/repo.git
你有没有尝试添加冗长的( -v
)运营商,当你克隆?
git clone -v git://git.kernel.org/pub/scm/.../linux-2.6 my2.6